본문 바로가기
Java/Java_basic

Step16. 오버라이드(Override)와 Super 클래스

by Mr.DonyStark 2023. 9. 25.

□ 메서드 오버라이드(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