휴먼 클래스를 확장하는 모든 병과는 동일한 공격 방법을 공유합니다. 즉, 인간 계급의 모든 하위 클래스는 인간 계급의 다른 하위 클래스와 동일한 방식으로 공격할 것입니다. 사용자가 전사가 검과 궁수로 공격하여 활과 화살로 공격할 것으로 예상하기 때문에 이것은 좋은 디자인이 아닐 것입니다. Java에서 메서드 재정의를 사용하면 이러한 디자인을 수행 할 수 있습니다. super()가 하위 클래스 생성자에서 지정되지 않고 수퍼클래스가 인수 없음 생성자를 선언하지 않으면 컴파일러가 오류를 보고합니다. 이는 하위 클래스 생성자가 super()가 없을 때 인수 없는 수퍼클래스 생성자라고 해야 하기 때문입니다. Java는 확장 키워드를 통해 클래스 확장을 지원합니다. 있는 경우 확장두 클래스 간의 부모-자식 관계를 지정합니다. 아래에서 확장 클래스 차량과 자동차 간의 관계를 설정한 다음 계정과 저축 계정 간의 관계를 설정하는 데 사용합니다: 여러 상속: 한 클래스가 둘 이상의 클래스를 확장하는 개념을 말하며, 이는 자식 클래스에 두 개의 부모 클래스가 있습니다. 예를 들어 클래스 C는 클래스 A와 B. Java가 여러 상속을 지원하지 않으므로 여기에서 자세히 읽어보십시오. 하위 클래스는 필요한 경우 자체 동작을 구현하기 위해 수퍼 클래스의 메서드를 재정의할 수 있습니다.

메서드 재정의를 사용하면 하위 클래스가 상속 계약을 통해 사용자가 예상하는 동작을 구현하는 방법을 결정할 수 있습니다. 이 게임에서 는 모든 클래스가 다른 클래스를 공격할 수 있기를 기대하지만 각 클래스가 고유한 방식으로 공격할 것으로 기대합니다. 따라서 휴먼 클래스의 각 하위 클래스는 자체 공격 동작을 구현하기 위해 attack() 인스턴스 메서드를 재정의해야 합니다. 이것은 자바에서 쉽습니다. 수퍼클래스에서 메서드를 재정의하기 위해 해야 할 일은 하위 클래스의 메서드 위에 @Override 개의 추가를 추가하는 것입니다: MountainBike는 자전거의 모든 필드와 메서드를 상속하고 필드 seatHeight 및 이를 설정하는 방법을 추가합니다. 생성자 제외 하 고 4 개의 필드와 5 개의 메서드를 사용 하 여 완전히 처음부터 새 MountainBike 클래스를 작성 한 것 처럼 됩니다. 그러나 모든 작업을 수행할 필요는 없습니다. 이는 Bike 클래스의 메서드가 복잡하고 디버깅하는 데 상당한 시간이 걸린 경우 특히 유용합니다. OOP의 접근 방식: OOP의 접근 방식을 사용하면 철회 함수의 고유한 구현을 사용하여 새 클래스를 작성하기만 하면 됩니다. 우리는 테스트 된 코드 조각을 건드리지 않았습니다. 위의 프로그램에서 MountainBike 클래스의 개체가 만들어지면 수퍼 클래스의 모든 메서드 및 필드의 복사본이 이 개체에서 메모리를 수집합니다.