Java

[Java] Super, this 연습

kyra 2022. 11. 20. 14:08
class SD1{
    public int i1;
    public double d1;
    public SD1(int i1){
        System.out.println("SD1(int i1) 생성자 수행");
        this.i1 = i1*i1;  //여기서 그냥 i2라는 새로운 변수로 i2 = i1 * i1 하면 안되나?
        System.out.println(i1+"의 제곱은 : "+this.i1);
    }
    public SD1(double d1){
        System.out.println("SD1(double d1) 생성자 수행");
        this.d1 = d1 * d1;
        System.out.println(d1+"의 제곱은 : "+this.d1);
    }
}

class Sub1 extends SD1{
    public Sub1(int i1){ //매개변수가 int인 메서드
        super(i1); //상위 클래스의 생성자 호출
        System.out.println("Sub1(int i1) 생성자 수행");
        this.i1 = this.i1 * i1;
        System.out.println(i1+"의 세제곱은 :" + this.i1);
    }
    public Sub1(double d1){ //매개변수가 double인 메서드
        super(d1);
        System.out.println("Sub1(double d1) 생성자 수행");
        this.d1 = this.d1 * d1;
        System.out.println(d1+"의 세제곱은 : " + this.d1);
    }
}

public class SuperTest3{
    public static void main(String args[]){
        Sub1 sub1 = new Sub1(10); //매개변수가 int인 Sub1을 실행할 것
        Sub1 sub2 = new Sub1(10.5); //매개변수가 double인 Sub1을 실행할 것
    }
}

 

1. 클래스 SD1

- int i1을 매개변수로 갖는 SD1 메서드

- double d1을 매개변수로 갖는 SD1 메서드

 

2. 클래스 Sub1 - SD1을 상속받는 클래스

- int i1을 매개변수로 하는 Sub1 메서드

- super(i1)로 인해 SD1의 생성자 i1을 가져옴

- doube i1을 매개변수로 하는 Sub1 메서드

- 마찬가지로 super(d1)으로 인해 SD1의 생성자 d1을 가져옴

 

3. 클래스 SuperTest3 

- Sub1의 객체 sub1에 매개변수 10 입력 : 10이므로 매개변수가 int인 Sub1을 실행

- Sub1의 객체 sub2에 매개변수 10.5 입력 ; 10.5이므로 매개변수가 double인 Sub1을 실행