생성자 함수 (Constructor) : 객체 생성시 자동으로 호출되는 함수
형식
public 클래스이름() { } - 다른 함수들과 달리 int나 String처럼 반환형식 지정을 안함.
//클래스에서 중요한 개념들
//1.상속 : 모듈화/계층화, 중복제거
//2.생성자함수 : 객체생성시 자동으로 호출되는 함수
//3.다형성 : 상속관계에서 하나의 객체가 여러 타입을 가질수 있다.
// : B클래스가 A클래스를 상속했다면, 타입을 B타입,A타입
// 2개 다 타입으로 가질 수 있다.
//4.추상화 클래스 : 일반 클래스(일반 함수) + 가상함수
//5.인터페이스 : 인터페이스 타입에 가상함수만 있는 것
//생성자 함수 : Constructor
// : 객체생성시(new) 자동으로 호출되는 함수
// 용도 : 값을 초기화 할때 사용.
class Book {
int price = 1000;
void read(){
System.out.println("책을 읽는다.");
}
//생성자 함수 형식
//public 반환형표시없음 클래스이름()
public Book(){
System.out.println("생성자함수 호출됨.");
this.price = 2000; // 생성자 함수를 통해 클래스 변수(속성) 수정
}
}
public class ex81 {
public static void main(String[] args) {
Book objBook = new Book();
System.out.println( objBook.price );
}
}
생성자 함수를 만들때 매개 변수를 따로 받을수도 있다. 이를 통해 인스턴스의 값을 할당할수도 있다.
class Robot{
String color = "빨강";
//기본 생성자함수(매개변수 없음)
public Robot(){
System.out.println("기본 생성자함수");
}
//매개변수가 있는 생성자 함수
public Robot(String color){
this.color = color;
System.out.println("매개변수가 있는 생성자함수");
}
}
public class ex82 {
public static void main(String[] args) {
//기본 생성자함수
Robot objRobot = new Robot();
//매개변수가 있는 생성자함수
Robot objRobot2 = new Robot("흰색"); // 인스턴스를 만들때 매개변수를 넣을수 있다.
System.out.println( objRobot2.color );
}
}
생성자 함수의 호출 순서는 다음과 같다.
부모 클래스 기본생성자 -> 자식 클래스 기본생성자 -> 자식클래스 매개변수 생성자.
만약 부모클래스 매개변수 생성자를 호출하고자 한다면, super()함수를 이용해서 접근해야 한다.
//상속관계에서 생성자 호출되는 순서(초기화 순서)
class Energy {
int price = 1000;
public Energy() { //기본생성자
System.out.println("Energy 기본생성자");
}
public Energy(int price) { //매개변수가 있는 생성자
this.price = price;
System.out.println("Energy 매개변수생성자");
}
}
class WindEnergy extends Energy {
int price = 2000;
public WindEnergy() {
System.out.println("WindEnergy 기본생성자");
}
public WindEnergy(int price){
//부모의 매개변수 생성자를 호출하고 싶다~
super( price );
this.price = price;
System.out.println("WindEnergy 매개변수생성자");
}
}
// this 뒤에 점을 찍으면, 자기클래스의 변수,메소드에 접근
// this() 함수를 호출하면, 자기클래스의 생성자함수 호출
// super 뒤에 점을 찍으면, 부모클래스의 변수,메소드에 접근
// super() 함수를 호출하면, 부모클래스의 생성자함수 호출
public class ex84 {
public static void main(String[] args) {
// 부모 기본생성자 -> 자식 기본생성자 호출
WindEnergy we = new WindEnergy();
// 부모 기본생성자 -> 자식 매개변수생성자 호출
WindEnergy we2 = new WindEnergy( 3000 );
}
}
super함수는 상속관계에서 부모 클래스에 접근하기 위한 함수다.
부모 클래스 매개변수 생성자를 호출하고 싶으면 super(매개변수) 형식으로 매개변수 생성자를 불러낸다음, this . 매개변수 함수를 이용해 값을 할당하면 된다.
'공부 > java' 카테고리의 다른 글
IO 와 NIO 를 이용한 입출력 (1/2) (0) | 2024.05.13 |
---|---|
자바 - Junit5 Jupiter 를 이용한 단위 테스트 시작 (1) | 2024.04.03 |
자바(java)의 클래스 상속 (0) | 2023.01.23 |
자바(java)의 싱글톤 패턴 (1) | 2023.01.23 |
자바(java)의 오버로딩(Overloading) (0) | 2023.01.23 |