본문 바로가기
JAVA 공부

생성자

by KyeongOUK 2020. 4. 27.

2020년 4월 27일 주요공부 

class Main {
	public static void main(String[] args) {
		사람 a홍길동 = new 홍길동();
		System.out.printf("== 홍길동 정보 ==\n");
		System.out.printf("이름 : %s\n", a홍길동.이름); // 홍길동
		System.out.printf("나이 : %s\n", a홍길동.나이); // 22
		사람 a홍길순 = new 홍길순();
		System.out.printf("== 홍길순 정보 ==\n");
		System.out.printf("이름 : %s\n", a홍길순.이름); // 홍길순
		System.out.printf("나이 : %s\n", a홍길순.나이); // 22
	}
}
class 사람 {
	String 이름;
	int 나이;
	사람() {
		this.나이 = 22;
	}
}
class 홍길동 extends 사람 {
	홍길동() {
		this.이름 = "홍길동";
	}
}
class 홍길순 extends 사람 {
	홍길순() {
		this.이름 = "홍길순";
	}
}

 

 

생성자는 클래스명과 같아야한다.

설명으로 홍길동과 홍길순은 나이가 같으므로 '사람'클래스 안에서 공통분모로 나이를 사용할수있다. 

사람() { 나이 = 20;} 같이 쓴다.

 

 

모든 클래스는 인스턴스화 될때 생성자를 사용한다.생성자의 특징

  • 생성자는 리턴타입이 없다.
  • 생성자를 프로그래머가 만들지 않으면 매개변수가 없는 생성자가 컴파일할 때 자동으로 만들어진다.
  • 매개변수가 없는 생성자를 기본생성자라고 한다.
  • 생성자를 하나라도 프로그래머가 만들었다면 기본생성자는 자동으로 만들어지지 않는다.

생성자의 역할

  • 생성자가 하는 일은 객체가 될 때 필드를 초기화 하는 역할을 수행한다.
  • 자동차가 객체가 될때 반드시 이름을 가지도록 하려면,Car클래스를 다음과 같이 만들어야 한다.

동일한 이름의 변수가 부모 클래스와 자식 클래스에 둘 다 존재할 경우 부모 클래스의 변수는 가려진다고 했습니다. 그렇다면 어떻게 부모 클래스의 변수를 이용할 수 있을까요? 우리가 이제 배우게 될 super라는 예약어로 해결이 가능합니다. 이 예약어를 사용하면 상위 클래스의 생성자에도 접근을 할 수 있게되죠.


자, 여기서 super 예약어를 어떻게 사용하는지 정리해봅시다.

 

 부모 클래스의 멤버 변수 접근: super.멤버변수

 부모 클래스의 멤버 메소드 접근: super.멤버메소드(매개변수);

 부모 클래스의 생성자 호출: super(매개변수);

 

그리고 super 예약어를 사용하면서 주의하셔야 할 점들이 몇가지 있습니다.

 

 반드시 자식 클래스의 생성자 첫 라인에서 부모의 생성자를 호출해야 함.

 자식 클래스의 생성자 내에서 반드시 부모의 생성자를 호출해야 함.

 명시적으로 자식의 클래스에서 부모의 생성자를 호출하지 않아도 super가 자동 삽입되어 부모 클래스의 생성자를 호출 함.



출처: https://blog.hexabrain.net/116 [끝나지 않는 프로그래밍 일기]

'JAVA 공부' 카테고리의 다른 글

자바의 객체지향 특징  (0) 2020.04.28
추상클래스(abstract)  (0) 2020.04.28
아스키코드(ASCII CODE)  (0) 2020.04.26
변수와 자료형(디폴트값)  (0) 2020.04.26
클래스와 객체  (0) 2020.04.24

댓글