728x90
반응형
Super
첫 번째는 하위 클래스에 의해 가려진 상위 클래스의 멤버 변수나 메소드에 접근할 때 사용
두 번째는 상위 클래스의 명시적 생성자를 호출하기 위해 사용
하위 클래스에 의해 가려진 상위 클래스의 멤버 변수나 메소드에 접근할 때
코드
class D1{
public int x = 1000;
public void display() {
System.out.println("상위 클래스 D1의 display() 메소드입니다.");
}
}
class D2 extends D1{
public int x = 2000;
public void display() {
System.out.println("하위 클래스 D2의 display() 메소드입니다.");
}
public void write() {
display();
super.display();
System.out.println("D2 클래스 객체의 x 값은 : " + x);
System.out.println("D1 클래스 객체의 x 값은 : " + super.x);
}
}
public class SuperTest2 {
public static void main(String[] args) {
D2 d = new D2();
d.write();
}
}
결과
상위 클래스의 명시적 생성자를 호출
코드
class SD1{
public int i1;
public double d1;
public SD1(int i1) {
System.out.println("SD1(int i1) 생성자 수행");
this.i1 = i1 * i1;
System.out.println(i1 + "의 2제곱은 : " + this.i1);
}
public SD1(double d1) {
System.out.println("SD1(double d1) 생성자 수행");
this.d1 = d1 * d1;
System.out.println(d1 + "의 2제곱은 : " + this.d1);
}
}
class Sub1 extends SD1{
public Sub1(int i1) {
super(i1);
System.out.println("Sub(int i1) 생성자 수행");
this.i1 = this.i1 * i1;
System.out.println(i1 + "의 3제곱은 : " + this.i1);
}
public Sub1(double d1) {
super(d1);
System.out.println("Sub(double d1) 생성자 수행");
this.d1 = this.d1 * d1;
System.out.println(d1 + "의 3제곱은 : " + this.d1);
}
}
public class SuperTest3 {
public static void main(String[] args) {
Sub1 sub1 = new Sub1(10);
System.out.println();
Sub1 sub2 = new Sub1(10.5);
}
}
결과
728x90
반응형
'JAVA > 개념정리' 카테고리의 다른 글
[JAVA] 다형성 (0) | 2022.10.13 |
---|---|
[JAVA] Object 클래스 (0) | 2022.10.12 |
[JAVA] 상속과 메소드 오버라이딩(overriding) (0) | 2022.10.12 |
[JAVA] 상속과 생성자 (0) | 2022.10.12 |
[JAVA] 상속 extends (0) | 2022.10.11 |
댓글