자바에서는 this라는 키워드를 제공한다. this는 말 그대로 '이것'을 의미한다. 이를 자바에서 보면 객체 자신을 가리킬 때 사용한다. 예를 들어 아래의 예시를 살펴보겠다.

public class Person {
	String name;
    int age;
    int height;
    
    Person(String n, int num, int h){
    	name=n;
        age=num;
        height=h;
    }
}

 위의 예시에서는 생성자에서 매개 변수로 각각 n, num, h를 썼다. 하지만 이렇게 쓰게 되면 오히려 가독성이 떨어지고 각 변수가 어떤 것을 의미하는지 알아보기 힘들수도 있다. 따라서 매개 변수와 필드의 이름을 같은 것을 사용해주면 좋지만 이름이 같으면 매개 변수가 사용 우선순위가 높은 까닭에 생성자 내부에서 해당 필드로 접근할 수가 없다. 이럴 때 사용하는 것이 'this'키워드이다. 사용방법은 간단하다. 객체 자신의 필드를 카리키는 이름 앞에 'this.'를 붙여주면 된다. 그러면 수정된 아래의 코드를 살펴보겠다.

public class Person {
	String name;
    int age;
    int height;
    
    Person(String name, int age, int height){
    	this.name=name;
        this.age=age;
        this.height=height;
    }
}

 수정된 코드는 위와 같다. 위가 훨씬 알아보기도 편하고 간결한 것을 알 수 있다.

'프로그래밍 > JAVA' 카테고리의 다른 글

메소드 - Method  (0) 2021.04.30
생성자 오버로딩(Overloading)  (0) 2021.04.30
생성자  (0) 2021.04.30
클래스의 구성 요소  (0) 2021.04.29
객체 생성 & 클래스 변수  (0) 2021.04.29

 생성자(Constructor)는 클래스에서 new 연산자로 객체를 생성할 때 객체의 초기화를 담당하는 부분이다. 객체의 초기화라고 하면 클래스 안에 있는 필드값을 초기화하거나, 클래스 내의 메소드들을 호출해서 사용 가능한 준비 상태로 만드는 것을 말한다. 이 클래스의 생성자를 호출하지 않고는 객체를 생성하지 못한다. static이라는 예외가 있긴 하지만 static은 추후에 알아보도록 하겠다.

 

 모든 클래스에는 반드시 생성자가 하나 이상 있어야 한다. 만약 클래스에서 생성자 선언을 건너뛰었다면 컴파일러는 클래스 내부에 아무 내용도 없는 기본 생성자를 자동으로 추가한다. 따라서 생성자가 없다면 안에 아무 내용도 없는 기본 생성자가 호출된다고 보면 된다.

 

 생성자는 메소드와 비슷하게 생겼으나 리턴 타입이 없고, 클래스의 이름과 동일하다. 하지만 메소드와 비슷한 점으로는 생성자도 매개 변수를 받을 수 있다는 것인데 여러 개의 매개 변수를 받을 수도 있다. 단, 이때는 객체를 생성할 때 new 연산자를 통해 해당 생성자의 매개변수와 맞는 구조를 입력해주어야 한다. 아래의 예시를 보겠다.

public class Person {
	//
    Person(String name, int age){
    	//
    }
}

 위와 같은 클래스(중간에 불필요한 내용은 생략했다고 치겠다)가 있다고 가정했을 때 객체를 생성하려면

- Perseon me=new Person("Kim", 25); 이런식으로 구조에 맞는 매개 변수를 입력해주어야 한다.

 

 이전에 생성자의 역할에는 필드의 초기화도 있다고 얘기 했었다. 그렇다면 이게 정확히 무엇을 의미하는지 알아보겠다. 우선 아래의 예시와 같은 코드가 있다고 하겠다.

public class Person {
	String name,
    int age,
    int height;
    
    Person(String n, int num, int h){
    	name=n;
        age=num;
        height=h;
    }
}

 위의 코드를 살펴보면 클래스의 이름은 Person이고 필드로는 String 형의 name이 있다. int형으로는 age, height가 있다. 만약 위의 클래스에서 생성자가 매개 변수가 없는 단순 생성자였으면 이 필드들은 각각 null값과 0으로 초기화 될 것이다. 하지만 생성자에 매개 변수를 부여함으로써 매개 변수로 입력받은 n을 name, num은 age, h를 height에 대입하라는 내용이 된다. 따라서 객체를 생성할 때는 아래와 같이 생성하면 된다.

Person me=new Person("Kim", 22, 180);

'프로그래밍 > JAVA' 카테고리의 다른 글

생성자 오버로딩(Overloading)  (0) 2021.04.30
this  (0) 2021.04.30
클래스의 구성 요소  (0) 2021.04.29
객체 생성 & 클래스 변수  (0) 2021.04.29
클래스 선언  (0) 2021.04.29

 클래스는 단순히 생성하기만 했다고 해서 모든 것이 끝나는 것은 아니다. 설계도 종이가 있다고 생산에 들어갈 수 있는 게 아닌 것처럼 클래스 안에도 필요한 것들을 적어넣어야 한다. 클래스는 크게 3가지 구성요소를 가지고 있다.

 

 - 생성자(Constructor) : 객체를 생성할 때 초기화되는 항목들을 관리

 - 필드(Field) : 객체의 데이터가 저장되는 곳

 - 메소드(Method) : 객체의 동작 및 데이터의 조작이 이루어지는 곳 (C 언어의 함수)

 

1. 필드

 필드는 객체의 데이터, 메소드의 반환값, 상태 등등을 저장하는 곳이다. 선언 형태는 변수와 비슷하지만 변수와는 약간의 차이가 있다. 변수는 생성자와 메소드 내에서만 사용돼 생성자와 메소드가 종료되면 같이 소멸되지만 필드는 소멸되지 않고 객체가 소멸되면 같이 소멸된다. 필드는 아래와 같이 생겼다

ex) String name="Kim";

     int number=1;

     float value=0.15f;

 

2. 생성자

 생성자는 객체를 생성할 때 new연산자를 사용하면 호출되는 부분이다. 말 그대로 객체가 생성될 때 필드를 초기화 시키고 클래스 안에 있는 메소드들을 호출해 준비를 한다. 생성자는 메소드와 굉장히 비슷하게 생겼는데 클래스 이름과 동일하고 리턴 타입이 없다. 생성자는 아래와 같이 생겼다.

ex) 클래스의 이름이 Person이라고 가정했을 때 -> Person(){ }

 

3. 메소드

 메소드는 C언어에서의 함수와 비슷한 역할을 한다. {}로 이루어져 있으며 호출되면 중괄호 안의 모든 내용들이 순차적으로 실행된다. 메소드는 작성하는 방법에 따라서 단순히 값만 계산할 수도 있고 또 다른 메소드를 호출해서 결과값을 가지고 다른 곳에 반환할 수도 있다.

ex) public int Value_number(int a){ // 실행 코드 }

'프로그래밍 > JAVA' 카테고리의 다른 글

this  (0) 2021.04.30
생성자  (0) 2021.04.30
객체 생성 & 클래스 변수  (0) 2021.04.29
클래스 선언  (0) 2021.04.29
Class - Field  (0) 2021.03.16

+ Recent posts