케네스로그

[Java] 상속, super() 본문

Dev/Java

[Java] 상속, super()

kenasdev 2022. 2. 15. 18:52
반응형

상속 Inheritance

상속(inheritance)한 클래스에서 다른 클래스의 속성(필드,메소드)들을 갖는것을 말합니다.

자식 클래스는 extends키워드를 통해 부모 클래스의 필드와 메소드를 상속받을 수 있으며, private인 속성과 메소드는 상속되지 않습니다.

  • 상속을 받는 클래스 =: 하위클래스, 자식클래스, sub클래스
  • 상속하는 클래스 =: 상위클래스, 부모클래스, super클래스
class Parent { }

class Child extends Parent { }

 

상속의 특징

  • 다중상속은 불가능하며, 오직 단일 상속만 가능합니다.
    • 한 클래스가 여러 부모 클래스를 가지는 것은 불가능합니다.
  • java.lang.Object클래스가 최상위 클래스이며, 모든 클래스는 Object클래스의 자손입니다.
  • 상속의 횟수는 제한이 없습니다.
  • private인 필드와 메소드는 상속대상에서 제외됩니다.
    • 부모,자식클래스가 서로 다른 패키지 내에 있다면 default 필드와 메소드 또한 상속에서 제외된다.

 

super키워드와 super()메소드

  • super 키워드는 부모의 메소드, 변수에 접근하기 위해 사용됩니다.
class Vehicle {
    public String model;

    public Vehicle(String model) {
        this.model = model;
    }

    void move() {
        System.out.println(this.model+" is moving");
    }
}

class Tesla extends Vehicle {

    public Tesla(String model) {
        super(model);
    }

    void autoDrive() {
        super.move(); // 부모의 move()메소드
    }
}

 

 

  • super() 메소드: 부모의 기본 생성자 호출
class SmartPhone {
  String function = "call";
  int IMEI;

	public SmartPhone() {
      this.IMEI = 1234;
  }
}

class Iphone extends SmartPhone {
    public Iphone() {
        super(); // 없더라도 자동으로 컴파일러에의해 추가된다
        super.IMEI = 9999;
    }
}

 

 

 

부모의 기본 생성자가 존재하지 않고 파라미터를 받는 생성자만 존재하는 경우, 
자식 클래스에서도 super()를 호출함에 있어 반드시 파라미터를 넘겨줘야만 합니다.

반응형

'Dev > Java' 카테고리의 다른 글

[Java] 패키지  (0) 2022.02.18
[Java] 메소드 디스패치  (0) 2022.02.16
[Java] 객체의 생성, 인스턴스화, 생성자, this 키워드  (0) 2022.02.09
[Java] 메소드, 접근제어자  (0) 2022.02.08
[Java] 클래스  (0) 2022.02.08