□ 메서드 오버라이드(override)
○ 부모 클래스의 기능을 자식 클래스에서 재정의해서 사용
* 부모클래스명에 커서를 넣고 ctrl+t를 누르면 모든 상속관계를 조회할 수 있음
□ 자료형(타입) : 기본 자료형처럼 클래스도 자료형임
□ Super 클래스 : 상위 클래스를 호출할때 super 키워드를 이용
예제1) 부모클래스 생성 및 속성/메서드 정의
package person_test;
//부모클래스 메서드 생성
public class China_Food_Parents {
//클래스 속성 지정
int openYear = 1900;
//부모클래스 생성자생성
public China_Food_Parents() {
System.out.println("나는 생성자");
}
//부모클래스 메서드 생성
public void makeJjajang() {
System.out.println("짜장요리법1");
}
}
예제1-1) 자식클래스1 생성 및 Override를 활용하여 메서드 재정의, Super/This 접근자활용
package person_test;
//자식클래스 생성
public class First_Son extends China_Food_Parents{
//클래스 속성 지정
int openYear = 2000;
//자식클래스 생서자생성
public First_Son() {
System.out.println("첫째아들생성자");
}
//메서드
//접근자 super를 사용하면 최상위 클래스 즉, 부모클래스의 값을 가져옴
// 접근자 this를 사용하면 현재클래스 즉, 자식클래스의 값을 가져옴
public void getOpenYear() {
System.out.println("부모매장 개업일 :" +super.openYear);
System.out.println("첫재아들 개업일 :" +this.openYear);
}
//부모클래스에서 정의한 메서드를 활용 및 재정의 하기위해 @override 활용
@override
public void makeJjajang() {
System.out.println("첫째아들 : 개선된 짜장요리법1");
}
}
예제1-2) 자식클래스2 생성 및 Override를 활용하여 메서드 재정의, Super/This 접근자활용
package person_test;
//자식클래스 생성
public class Second_Son extends China_Food_Parents{
//클래스 속성 지정
int openYear = 2020;
//자식클래스 생서자생성
public Second_Son() {
System.out.println("둘째아들생성자");
}
//메서드
//접근자 super를 사용하면 최상위 클래스 즉, 부모클래스의 값을 가져옴
// 접근자 this를 사용하면 현재클래스 즉, 자식클래스의 값을 가져옴
public void getOpenYear() {
System.out.println("부모매장 개업일 :" +super.openYear);
System.out.println("둘째아들 개업일 :" +this.openYear);
}
//부모클래스에서 정의한 메서드를 활용 및 재정의 하기위해 @override 활용
@override
public void makeJjajang() {
System.out.println("둘째아들 : 개선된 짜장요리법2");
}
}
예제1-3) 객체생성 및 부모클래스 타입을 활용하여 배열생성하기 + 객체생성하여 클래스에서 정의한 메서드 활용
package person_test;
public class China_Food {
public static void main(String[] args) {
//배열생성
//배열은 같은 타입 즉, 같은 자료형으로만 생성 가능함
China_Food_Parents[] pArr = new China_Food_Parents[2];
//생성된 배열의 인덱스별로 자식클래스 지정하여 객체생성
pArr[0] = new First_Son();
pArr [1] = new Second_Son();
for(int i = 0; i < pArr.length; i++) {
pArr[i].makeJjajang();
//객체생성
First_Son Family_Open = new First_Son();
//클래스 메서드를 활용하여 객체 메서드 지정
Family_Open.getOpenYear();
}
}
}
//부모클래스로부터 생성된 배열과 배열의 인덱스별 저장된 자식 클래스의 객체 타입이 같다는것을 알수 있음
'Java > Java_basic' 카테고리의 다른 글
Step18. 인터페이스(Interface) (0) | 2023.09.25 |
---|---|
Step17. 내부클래스와 익명클래스 (0) | 2023.09.25 |
Step15. 상속과 Private 접근자 (0) | 2023.09.25 |
Step14. 데이터은닉과 Getter/Setter (0) | 2023.09.24 |
Step13. 패키지와 Static (0) | 2023.09.24 |