타입 상속
자바에서 타입 상속(Type Inheritance)이란, 클래스와 인터페이스 간의 관계를 나타내는 것으로, 부모 클래스나 인터페이스의 멤버들을 자식 클래스나 인터페이스에서 사용할 수 있도록 하는 것을 말합니다.
타입 상속을 통해 자식 클래스나 인터페이스는 부모 클래스나 인터페이스의 멤버들을 물려받아 사용할 수 있습니다.
이를 통해 코드의 재사용성을 높일 수 있고, 클래스나 인터페이스 간의 계층 구조를 표현할 수 있습니다.
자바의 타입 상속 원리
자바에서 타입 상속은 extends
키워드를 사용해 부모 클래스를 지정하거나, implements
키워드를 사용해 인터페이스를 구현하여 구현됩니다.
자식 클래스나 인터페이스는 부모 클래스나 인터페이스를 상속받음으로써, 부모 클래스나 인터페이스의 멤버들을 사용할 수 있습니다.
이때, 부모 클래스나 인터페이스에서 선언된 멤버는 상속받은 클래스나 인터페이스에서도 동일한 이름으로 사용될 수 있습니다.
자식 클래스는 상속받은 멤버들을 Super 키워드를 사용해 접근할 수 있습니다.
인터페이스에서는 상수와 추상 메서드만 선언할 수 있으므로, 상수는 interfaceName.CONSTANT_NAME
형식으로, 추상 메서드는 반드시 구현되어야 합니다.
타입 상속시, 형 변환의 의미 Feat 상속과 다른 점
타입 상속에서 형 변환은 상속에서의 형 변환과 비슷하지만, 몇 가지 차이점이 있습니다.
상속에서는 부모 클래스의 메서드를 자식 클래스에서 오버라이딩하거나 추가하는 것이 가능하지만, 타입 상속에서는 인터페이스에서 선언된 메서드만 사용 가능합니다.
interface Shape {
double getArea();
}
class Rectangle implements Shape {
private int width;
private int height;
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
@Override
public double getArea() {
return width * height;
}
}
class Circle implements Shape {
private int radius;
public Circle(int radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
public class Main {
public static void main(String[] args) {
Shape rect = new Rectangle(5, 10);
Shape circle = new Circle(7);
System.out.println("The area of rectangle is " + rect.getArea());
System.out.println("The area of circle is " + circle.getArea());
}
}
위 예제에서 Shape
인터페이스는 타입 상속의 역할을 합니다. Rectangle
과 Circle
클래스는 Shape
인터페이스를 구현하고 있으므로 Shape
타입으로 형 변환이 가능합니다.
이 경우 Shape
인터페이스에서 선언된 getArea()
메서드만 사용 가능합니다.
따라서 rect
와 circle
변수에서는 getArea()
메서드만 사용할 수 있습니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'DEV > Java' 카테고리의 다른 글
Interface의 활용 - 🐥 카카오 테크 캠퍼스 (0) | 2023.04.28 |
---|---|
Interface (0) | 2023.04.27 |
추상클래스(Abstract Class) (1) | 2023.04.27 |
프레임워크와 라이브러리의 차이 (0) | 2023.04.27 |
Template 메서드 패턴 (0) | 2023.04.27 |