본문 바로가기
언어 공부/Java

JAVA 클래스의 개념

by krapoi 2021. 9. 1.
반응형

*(필자가 이해한 내용을 바탕으로 쓰는 글입니다. 틀린 부분이 있을 수 있고, 미흡한 부분이 있을 수 있습니다.)*

 

객체지향 언어에 대해 공부를 하다 보니 문득 클래스의 개념이 정확히 무엇인가에 의문을 품어 공부를 해보았다.

 

일단 클래스는 필드와 메소드로 구성이 된다. 

*필드 = 클래스에 포함된 변수

*메서드 = 명령문이 모인 집합체

 

클래스는 이러한 객체들을 정의하는 틀로 쓰인다고 한다.

 

클래스를 잘 설명하는 사진을 가지고 왔다.

과자틀 = class, 과자틀로 만들어진 과자들 = 객체

 

이제 코드로 이해해보자.

일단 클래스를 만든다.

package Class;

public class Student {

}

 

큰 틀인 클래스 Student를 생성했다.

이제 메인을 추가하자.

package Class;

public class Student {
	
    public static void main(String[] args) {
    	
    }
}

그러면 객체를 만들어 보자.

package Class;

public class Student {
	
    String name; //객체 변수
    public static void main(String[] args) {
    	 Student std = new Student(); //객체
        std.name = "abcdefg"; //객체 변수를 이용한 이름설정
         System.out.println(std.name);
    }
}

객체 변수인 name(String)을 선언해 주었고 메인 안에 객체 std를 선언하였다.

이후 객체 std에서 객체 변수인 name에 접근해 이름을 설정해 주었다.

 

이제 메서드를 넣어보자.

 

package Class;

public class Student {

    String name; //객체 변수

    public void setName(String name){ //메소드
        this.name = name; // Student std = new Student() 의 std에서 setName을 호출 헀기에 this = std,즉 this.name(Student의 name) = std.name(setName의 매개변수)
    }

    public static void main(String[] args) {
        Student std = new Student();
        std.name = "abcdefg"; //객체 변수를 이용한 이름설정
        System.out.println(std.name);
        std.setName("ggs"); // 메소드를 이용한 이름설정
        System.out.println(std.name);
    }
}

객체 std에서 setName이라는 메소드를 호출하여 이름을 설정해 주었다.

 

이러한 클래스에서 가장 중요한 것이 객체 변수가 공유되지 않는다는 점이다.

package Class;

public class Student {

    String name; //객체 변수

    public void setName(String name){ //메소드
        this.name = name; // Student std = new Student() 의 std에서 setName을 호출 헀기에 this = std,즉 this.name(Student의 name) = std.name(setName의 매개변수)
    }

    public static void main(String[] args) {
        Student std = new Student();
        Student student = new Student();
        std.name = "abcdefg"; //객체 변수 를 이용한 이름설정

        student.name = "gfedcba";
        System.out.println(std.name);
        System.out.println(student.name);
    }
}

이런 식으로 객체 변수를 2번 사용한 뒤 출력하면

각각 설정한 이름으로 나오는 것을 확인할 수 있다.

이로써 객체 변수가 공유되지 않는다는 것을 확인했다.

이처럼 객체 변수의 값은 독립적으로 유지가 된다는 점을 클래스의 존재의 이유라고 하기도 한다.

 

이렇게 클래스에 대해 공부해 보았다.

반응형

'언어 공부 > Java' 카테고리의 다른 글

[JAVA] 람다식의 개념과 사용법  (0) 2021.10.07
[JAVA] Replace(문자열 치환) 에 대하여  (0) 2021.10.05
객체지향 프로그래밍  (0) 2021.09.16
JAVA 메소드의 개념  (0) 2021.09.14
자바 extends와 implements 에 대해  (0) 2021.09.07