상속(Inheritance)
: 상속은 클래스 간의 상하 관계로 추상적인 슈퍼 클래스(부모 클래스)로부터 서브 클래스(자식 클래스)를 만드는 것으로 상속이라는 관계를 통해 계층구조를 형성합니다.
클래스 상속의 특징 :
- 슈퍼 클래스에서 정의된 필드와 메서드를 참조받습니다.
- 새로운 필드나 메서드를 추가할 수 있습니다.
- 슈퍼 클래스에서 물려받은 메서드를 수정할 수 있습니다.(오버라이딩)
- 동일 슈퍼 클래스를 상속하는 모든 서브 클래스는 타입 호환이 됩니다.
상속을 이용하면 코드의 재사용이 가능해지고 부모 클래스 레벨에서 호환되는 서브 클래스를 사용해 다형성의 기반을 마련할 수 있습니다.
오버라이딩(Overriding)
: 슈퍼 클래스로부터 상속받은 메서드를 다시 정의하는 것을 말합니다. 메서드의 이름과 리턴 타입, 인자 등이 모두 동일해야 하며 다를 경우 새로운 메서드가 추가되는 형식이 됩니다.
오버라이딩을 통해 객체지향의 특징 중 하나인 다형성 구현이 가능해집니다. 예를 들어 교통수단 클래스가 있고 brand()라는 메서드가 있다고 했을 때 교통수단 클래스를 상속받는 스포츠카와 오토바이 클래스를 만들 경우 brand() 메서드의 오버라이딩을 통해 서로 다른 동작이 가능하게 할 수 있습니다.
class Vehicle {
void brand() {
System.out.println("KIA");
}
}
class SportsCar extends Vehicle {
void brand() {
System.out.println("FERRARI");
}
}
class Motorcycle extends Vehicle {
void brand() {
System.out.println("BMW");
}
}
다음과 같이 Vehicle 클래스 타입으로 SportsCar 클래스의 인스턴스를 생성해 brand() 메서드를 호출하면 FERRARI가 출력됩니다.
Vehicle vehicle = new SportsCar();
vehicle.brand(); // FERRARI
SportsCar 대신 Motorcycle 인스턴스를 생성하면 동일 코드에서 BMW가 출력되어 동일한 구조에서 다른 동작이 실행되는 다형성을 구현할 수 있습니다.
'JAVA > JAVA 개념' 카테고리의 다른 글
JAVA 개념 4-3 - 패키지와 제어자 (0) | 2023.01.19 |
---|---|
JAVA 개념 4-2 - 추상클래스와 인터페이스 (0) | 2023.01.12 |
JAVA 개념 3-4 - 키보드 입력과 로깅 (0) | 2022.11.30 |
JAVA 개념 3-3 - 배열 (0) | 2022.11.25 |
JAVA 개념 3-2 - 반복문 (0) | 2022.11.24 |
상속(Inheritance)
: 상속은 클래스 간의 상하 관계로 추상적인 슈퍼 클래스(부모 클래스)로부터 서브 클래스(자식 클래스)를 만드는 것으로 상속이라는 관계를 통해 계층구조를 형성합니다.
클래스 상속의 특징 :
- 슈퍼 클래스에서 정의된 필드와 메서드를 참조받습니다.
- 새로운 필드나 메서드를 추가할 수 있습니다.
- 슈퍼 클래스에서 물려받은 메서드를 수정할 수 있습니다.(오버라이딩)
- 동일 슈퍼 클래스를 상속하는 모든 서브 클래스는 타입 호환이 됩니다.
상속을 이용하면 코드의 재사용이 가능해지고 부모 클래스 레벨에서 호환되는 서브 클래스를 사용해 다형성의 기반을 마련할 수 있습니다.
오버라이딩(Overriding)
: 슈퍼 클래스로부터 상속받은 메서드를 다시 정의하는 것을 말합니다. 메서드의 이름과 리턴 타입, 인자 등이 모두 동일해야 하며 다를 경우 새로운 메서드가 추가되는 형식이 됩니다.
오버라이딩을 통해 객체지향의 특징 중 하나인 다형성 구현이 가능해집니다. 예를 들어 교통수단 클래스가 있고 brand()라는 메서드가 있다고 했을 때 교통수단 클래스를 상속받는 스포츠카와 오토바이 클래스를 만들 경우 brand() 메서드의 오버라이딩을 통해 서로 다른 동작이 가능하게 할 수 있습니다.
class Vehicle {
void brand() {
System.out.println("KIA");
}
}
class SportsCar extends Vehicle {
void brand() {
System.out.println("FERRARI");
}
}
class Motorcycle extends Vehicle {
void brand() {
System.out.println("BMW");
}
}
다음과 같이 Vehicle 클래스 타입으로 SportsCar 클래스의 인스턴스를 생성해 brand() 메서드를 호출하면 FERRARI가 출력됩니다.
Vehicle vehicle = new SportsCar();
vehicle.brand(); // FERRARI
SportsCar 대신 Motorcycle 인스턴스를 생성하면 동일 코드에서 BMW가 출력되어 동일한 구조에서 다른 동작이 실행되는 다형성을 구현할 수 있습니다.
'JAVA > JAVA 개념' 카테고리의 다른 글
JAVA 개념 4-3 - 패키지와 제어자 (0) | 2023.01.19 |
---|---|
JAVA 개념 4-2 - 추상클래스와 인터페이스 (0) | 2023.01.12 |
JAVA 개념 3-4 - 키보드 입력과 로깅 (0) | 2022.11.30 |
JAVA 개념 3-3 - 배열 (0) | 2022.11.25 |
JAVA 개념 3-2 - 반복문 (0) | 2022.11.24 |