오버라이딩(overriding)

roglog·2021년 6월 28일
0

java의 정석

목록 보기
17/36

1. 오버라이딩이란?


  • 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것

2. 오버라이딩의 조건


  • 조상클래스의 메서드와 '이름', '매개변수', '리턴타입'이 같아야 한다.
    (jdk1.5부터 리턴타입을 자손 클래스의 타입으로 변경하는 것은 가능하도록 조건이 완화됨)
  • 제한적 조건
    • 접근제어자는 조상 클래스의 메서드보다 좁은 범위로 변경 할 수 없다.
    • 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
    • 인스턴스메서드를 static메서드 또는 그 반대로 변경할 수 없다.

3. super


  • 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는데 사용되는 참조변수
  • 상속받은 멤버와 자신의 멤버가 이름이 같을 때 super를 붙여서 구별할 수 있음
  • static메서드는 인스턴스와 관련이 없기 때문에 static메서드에서는 super를 사용할 수 없다.
  • 조상 클래스의 메서드를 자손 클래스에서 오버라이딩한 경우에 super를 사용한다.

4. super()


  • 조상 클래스의 생성자를 호출하는데 사용
  • 자손 클래스의 인스턴스를 생성하면 조상 클래스의 인스턴스는 자동으로 생성되기에 조상 클래스 멤버의 초기화 작업이 필요 -> 자손 클래스의 생성자에서 조상클래스의 생성자가 호출되어야 함
  • Object클래스를 제외한 모든 클래스의 생성자 첫 줄에 반드시 자신의 다른 생성자 또는 조상의 생성자를 호출해야 한다. (그렇지 않으면 컴파일러가 자동으로 'super()'를 추가)

java의 정석 chapter7

profile
Full Stack Developer 📚

0개의 댓글