728x90

 

우리의 관심사

어떻게하면 자식 클래스가 부모 클래스가 가지고 있지 않은 새로운 기능을 추가할 것인가?

또 부모 클래스가 가지고 있는 기능을 덮어쓰기(수정) 할 것인가?

 

기능 추가

오리지널 Cal의 sum기능을 복사해서 Cal3에 넣고 minus로 변경

Cal3는 이제 부모 클래스가 없는 마이너스 기능도 탑재

 class Cal33 extends Cal11{		// extends : Cal1을 상속
	public int minus(int v1, int v2) {
		return v1-v2;			// Cal3는 이제 부모 클래스가 없는 마이너스 기능도 탑재
	}
}

Cal33 c3 = new Cal33();
System.out.println(c3.sum(2,1));
System.out.println(c3.minus(2,1));	// 자식클래스에 추가된 minus기능

오리지널의 기능 수정 가능?

가능

오리지널의 sum에 프린트기능 추가 수정해서 cal3에서 써보자

class Cal33 extends Cal11{		// extends : Cal1을 상속
	public int minus(int v1, int v2) {
		return v1-v2;			// Cal3는 이제 부모 클래스가 없는 마이너스 기능도 탑재
	}
	public int sum(int v1, int v2) {
		System.out.println("Cal3!!");
		return v1+v2;    // 부모가 가진 기능을 재정의(수정)
	}
}

오버라이딩(Overriding)

부모가 가진 기능재정의하는 것을 오버라이딩(Overriding)

 

 

전체코드

// Java 상속 - 2. 기능의 개선과 발전

class Cal11 {
	public int sum(int v1, int v2) {
		return v1+v2;
	}
}
class Cal33 extends Cal11{		// extends : Cal1을 상속
	public int minus(int v1, int v2) {
		return v1-v2;			// Cal3는 이제 부모 클래스가 없는 마이너스 기능도 탑재
	}
	public int sum(int v1, int v2) {
		System.out.println("Cal3!!");
		return v1+v2;
	}
}
public class Inheritance02 {

	public static void main(String[] args) {

		Cal11 c1 = new Cal11();
		System.out.println(c1.sum(2,1));
		
		Cal33 c3 = new Cal33();
		System.out.println(c3.sum(2,1));
		System.out.println(c3.minus(2,1));	// 자식클래스에 추가된 minus기능
		
		
	}
class Cal22 {
	public int sum(int v1, int v2) {
		return v1+v2;
	}
	public int minus(int v1, int v2) {
		return v1-v2;
	}
}
}

 

728x90
반응형

+ Recent posts