[Java] 클래스(Class) 구현하기 - 멤버변수, 생성자, 메서드, this
클래스의 기본 구조
클래스는 멤버 변수 (속성), 메소드 (기능), 생성자로 구성된다.
이 중, 생성자는 메모리에 객체를 생성하는 역할을 한다.
public Grandeur() {
}
기본 생성자는 위의 코드와 같이 생겼다. 메소드 이지만 대문자로 시작하고, 클래스명과 같은 명칭을 쓴다는 것이 다른 메소드와 생성자와의 차이이다.
Grandeur car = new Grandeur();
위와 같은 형태로 메모리 내에 객체가 생성되고, car라는 인스턴스가 생기는데 이때 객체를 생성하기 위한 메소드로 사용하기 위해 만들어진 것이 기본 생성자이다.
기본 생성자에서 좀 더 발전된 형태의 생성자를 중복 형성하는 것도 가능하다. (자바 클래스 내에서는 이름은 같으나 매개변수의 개수 또는 타입이 다른 중복 메소드를 만드는 것이 가능하기 때문이다.) 하지만 이렇게 응용된 생성자 이전에 기본 생성자는 꼭 있어야 한다는 점 명심!
public Grandeur(String color, String gear, int price) {
this.color = color;
this.gear = gear;
this.price = price;
}
위의 코드처럼 클래스의 멤버변수 값을 매개변수로 할당하는 생성자를 만들 수도 있다. 기본 생성자가 아닌 이런 생성자를 사용했을 때의 장점은, 매개 변수 값을 필수로 넣어주어야 Grandeur 객체를 생성할 수 있기 때문이다. (매개변수 중 하나라도 누락하면 에러난다. ) 인스턴스 생성 시에 멤버 변수에 해당하는 값을 필수로 넣어주여야 하는 상황이라면, 위와 같은 형태의 생성자를 만들어 활용하는 것이 편하다. 기본생성자를 생성하고 그 밑에 일일히 넣어주는 작업으로도 충분히 가능하지만, 사람이 하는 일인지라 값을 넣어야 하는 멤버변수가 많아지게 되면 기입을 뺴먹을 수 있기 때문이다.
추가로 설명하자면 this는 클래스 내의 전역변수 값을 나타내기 위한 도구다.
public class Grandeur{
public String color;
public String gear;
public int price;
public class Grandeur(String c, String g, int p) {
color = c;
gear = g;
price = p;
}
}
원래는 이러한 의미이다.
위의 코드에서는 color, gear, price가 전역변수이고 c,g,p는 지역변수이다. color = c ; 는 c라는 지역변수를 color라는 전역변수에 할당해주어 객체 전체의 값으로 만들어주는 과정이다. 여기서 우리가 this를 쓰는 이유는 대게 우리는 지역변수를 c라고 쓰지 않고 color라고 써서 전역변수와 지역변수의 변수명이 같아지기 때문이다. 그래서 this라는 "이 객체의" 라는 의미를 가진 표지를 붙여 this.color 라고 this가 가리키는 color가 전역변수임을 나타내주는 것이다.
[출처 및 참고자료: 이 포스팅은 인프런 강의 (강의링크: www.inflearn.com/course/%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94_java-renew/dashboard)를 바탕으로 작성되었습니다.]