Java 상속 오버라이딩 다형성 추상클래스

앞고기랑 소금·2024년 7월 30일

스파르타 TIL

목록 보기
11/43

11일차

1. 상속

  • extends
    • 상속의 사전적 정의는 부모가 자식에게 물려주는 행위를 말함.
    • 부모클래스의 필드와 메서드를 상속 받아 자식클래스에서 살을 더 붙힘.
public class 자식클래스 extends 부모클래스 {

}
  • 부모 클래스에 새로운 필드와 메서드가 추가되면 자식 클래스는 이를 상속받아 사용할 수 있다.
  • 클래스에 새로운 필드와 메서드가 추가되어도 부모 클래스는 어떠한 영향도 받지 않는다.
  • 자식 클래스의 멤버 개수는 부모 클래스보다 항상 같거나 많다.
  • Java는 다중 상속을 허용하지 않는다.

2. 오버라이딩

  • @Override
    • 부모 클래스로부터 상속받은 메서드의 내용을 재정의 하는 것을 오버라이딩이라함.
    • 오버라이딩을 하기 위해서는 아래 조건들을 만족해야 합니다.
      • 선언부가 부모 클래스의 메서드와 일치해야 합니다.
      • 접근 제어자를 부모 클래스의 메서드 보다 좁은 범위로 변경할 수 없습니다.
      • 예외는 부모 클래스의 메서드 보다 많이 선언할 수 없습니다.
  • super는 부모 클래스의 멤버를 참조할 수 있는 키워드
  • super(…)는 부모 클래스의 생성자를 호출할 수 있는 키워드

3. 다형성

  • 다형성이란 ‘여러 가지 형태를 가질 수 있는 능력’을 의미
    • 부모 변수 = 자식 객체;를 선언하여 자동 타입 변환된 변수를 사용해 각각의 자식 객체에 재정의 된 메서드를 통해 다형성 구현
    • 매개변수에도 다형성이 적용될 수 있습니다.
    • 반환 타입에도 다형성이 적용될 수 있습니다.
    • 반환 타입이 부모 타이어이기 때문에 자식 타이어 객체들을 반환값으로 지정할 수 있습니다.
    • 또한 자동 타입 변환이 된 반환값인 자식 타이어 객체를 강제 타입 변환할 수도 있습니다.
  • instanceof
    • 다형성 기능으로 인해 해당 클래스 객체의 원래 클래스명을 체크하는 것이 필요한데 이때 사용할 수 있는 명령어
    • 이 명령어를 통해서 해당 객체가 내가 의도하는 클래스의 객체인지 확인할 수 있습니다.
    • {대상 객체} instance of {클래스 이름} 와 같은 형태로 사용하면 응답값은 boolean입니다.

4. 추상클래스

  • abstract 추상클래스
    • 클래스가 설계도라면 추상 클래스는 미완성된 설계도이다.
    • 추상 클래스는 추상 메서드를 포함할 수 있습니다.
      • 추상 메서드가 없어도 추상 클래스로 선언할 수 있습니다.
    • 추상 클래스는 자식 클래스에 상속되어 자식 클래스에 의해서만 완성될 수 있습니다.
    • 추상 클래스는 여러 개의 자식 클래스들에서 공통적인 필드나 메서드를 추출해서 만들 수 있습니다.
public abstract class 추상클래스명 {

}
  • 추상 메서드
    • 추상 메서드는 아직 구현되지 않은 미완성된 메서드
    • abstract 키워드를 사용하여 추상 메서드를 선언
    • 추상 메서드는 일반적인 메서드와는 다르게 블록{ }이 없습니다.
      • 즉, 정의만 할 뿐, 실행 내용은 가지고 있지 않습니다.
public abstract class 추상클래스명 {
		abstract 리턴타입 메서드이름(매개변수, ...);
}
  • 추상 클래스 상속
    • 추상 메서드extends 키워드를 사용하여 클래스에서 상속됩니다.
    • 상속받은 클래스에서 추상 클래스의 추상 메서드는 반드시 오버라이딩 되어야 합니다.
public class 클래스명 extends 추상클래스명 {
		@Override
    public 리턴타입 메서드이름(매개변수, ...) {
		       // 실행문
    }
}

0개의 댓글