728x90
상속과 관련된 중요 키워드
this는 자기 자신
super는 자신의 부모
cal3클래스의 sum메소드는 부모클래스인 cal의 sum메소드를 오버라이딩하고 있음
이 코드가 엄청나게 복잡한 코드였다면 같은 기능의 코드를 중복해서 쓰는 낭비가 많았을 것
class Cal111 {
public int sum(int v1, int v2) {
return v1+v2;
}
public int sum(int v1, int v2, int v3) { // 같은 이름 메소드 // int v3 추가
return v1+v2+v3;
}
}
class Cal333 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;
}
}
이럴 때 계승 발전 시키면 매우 유리할 것
자식 클래스의 메소드(sum)가 부모 클래스의 메소드(sum)를 호출하고 그 결과를 이용할 수 있다면 편리할 것. 이때 쓰는 것이 super
super.
자식 클래스의 메소드가 부모 클래스의 메소드를 호출하고 그 결과를 이용하는 것
super.부모클래스의 메소드명;
public int sum(int v1, int v2){
return super.sum(v1,v2);
}
super가 잘 작동하는지 체크해보고 싶다면?
브레이크포인트 걸고 디버깅 해볼 것
this.
class Cal111 {
// this
// 자기 자신을 뜻함
public int sum(int v1, int v2, int v3) {
return this.sum(v1,v2)+v3; // .sum() 자기자신
}
}
전체코드
// Java 상속 - 4. this & super
class Cal111 {
public int sum(int v1, int v2) {
return v1+v2;
}
// this
// 자기 자신을 뜻함
public int sum(int v1, int v2, int v3) { // 같은 이름 메소드 // int v3 추가
return this.sum(v1,v2)+v3; // .sum() 자기자신
}
}
class Cal333 extends Cal11{ // extends : Cal1을 상속
public int minus(int v1, int v2) {
return v1-v2; // Cal3는 이제 부모 클래스가 없는 마이너스 기능도 탑재
}
// super
// 부모를 뜻함
public int sum(int v1, int v2) {
System.out.println("Cal3!!");
return super.sum(v1,v2); // .sum()은 부모클래스 sum()
}
}
public class Inheritance04 {
public static void main(String[] args) {
Cal111 c1 = new Cal111();
System.out.println(c1.sum(2,1));
System.out.println(c1.sum(2,1,1));
Cal333 c3 = new Cal333();
System.out.println(c3.sum(2,1));
System.out.println(c3.minus(2,1)); // 자식클래스에 추가된 minus기능
}
class Cal222 {
public int sum(int v1, int v2) {
return v1+v2;
}
public int minus(int v1, int v2) {
return v1-v2;
}
}
}
728x90
반응형
'JAVA > 생활코딩 JAVA 상속' 카테고리의 다른 글
Java 상속(Inheritance) - 6. 수업을 마치며 : 다형성(Polymorphism), 접근제어자, Final, Abstract (0) | 2022.02.06 |
---|---|
Java 상속(Inheritance) - 5. 상속과 생성자 (0) | 2022.02.06 |
Java 상속(Inheritance) - 3. Overriding vs Overloading (0) | 2022.02.06 |
Java 상속(Inheritance) - 2. 기능의 개선과 발전 : 자식클래의 기능 추가 & 수정 (0) | 2022.02.06 |
Java 상속(Inheritance) - 1. 수업소개 : 상속의 정의 & 장점 (0) | 2022.02.05 |