JAVA/JAVA 개념

JAVA 개념 4-1 - 상속과 오버라이딩

kms152000 2023. 1. 3. 14:44

상속(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가 출력되어 동일한 구조에서 다른 동작이 실행되는 다형성을 구현할 수 있습니다.