인터페이스를 구현할 때 인터페이스 구문을 사용하여 인터페이스를 클래스 정의에서 분리하고 주제를 형성합니다. 인터페이스는 클래스에 대한 인터페이스 사양을 제공합니다.
상속에서는 프로그램의 재사용성을 향상시키기 위해 상속 메커니즘을 도입합니다. 당시의 상속은 클래스를 기반으로 했습니다. 인터페이스 인터페이스를 상속하여 원래 인터페이스를 확장할 수도 있습니다.
인터페이스 상속
인터페이스 상속(상속)은 상속된 인터페이스를 기반으로 새로운 인터페이스 메서드 프로토타입을 추가하는 클래스 상속과 매우 유사합니다. 예를 들어 Cup을 원래 인터페이스로 사용합니다.
다음과 같이 코드 코드를 복사합니다.
인터페이스 컵 {
void addWater(int w);
void drinkWater(int w);
}
Cup 상속을 기반으로 저울이 있는 컵에 대한 새로운 인터페이스인 MetricCup을 정의합니다.
인터페이스는 다음과 같습니다:
다음과 같이 코드 코드를 복사합니다.
인터페이스 MetricCup은 Cup을 확장합니다.
{
int WaterContent();
}
정수(물의 양)를 반환하는 새로운 메서드 프로토타입 WaterContent()를 추가했습니다.
인터페이스의 다중 상속
Java 클래스 상속에서 파생 클래스는 하나의 기본 클래스만 가질 수 있습니다. 즉, 클래스는 동시에 둘 이상의 클래스에서 상속할 수 없습니다. Java에서는 인터페이스가 동시에 두 개 이상의 인터페이스를 상속할 수 있으며 이를 다중 상속이라고 합니다.
예를 들어 다음과 같은 플레이어 인터페이스가 있습니다.
다음과 같이 코드 코드를 복사합니다.
인터페이스 플레이어
{
무효 플레이();
}
새로운 MusicCup 인터페이스를 추가합니다. Cup 인터페이스와 Player 인터페이스를 모두 갖고 있으며 display() 메소드 프로토타입을 추가합니다.
다음과 같이 코드 코드를 복사합니다.
인터페이스 MusicCup은 Cup, Player를 확장합니다.
{
무효 표시();
}
(인터페이스 사용 방법은 인터페이스 구현 참조)
추상 수업
인생에는 매우 추상적인 개념이 있습니다. 이러한 추상 개념은 종종 다음과 같은 많은 클래스의 모음입니다.
1. 곡물(옥수수, 밀, 쌀 가능)
2. 그래픽(삼각형, 원, 사각형일 수 있음)
또 다른 예를 들어, 이전에 예를 들었습니다.
1. 인간(남자일 수도 있고 여자일 수도 있음)
이러한 관계를 구성할 때 다음과 같은 상속을 사용할 수 있습니다.
우리의 상식에 따르면:
1. "식품류의 대상"이라는 용어는 추상적이다. 이러한 객체는 옥수수, 쌀, 밀 하위 클래스 중 하나에 속해야 합니다.
2. Food 클래스에는 eat() 메소드가 있습니다(음식을 먹을 수 있음). 그러나 그러한 행위는 추상적이다. 음식을 먹는 구체적인 방법은 다릅니다. 예를 들어, 옥수수는 껍질을 벗겨서 먹어야 하고, 밀은 갈아서 가루로 만들어야 합니다. 모든 클래스에서 Food 클래스의 eat() 메서드를 재정의해야 합니다.
추상적이고 구체적인
Java는 클래스 및 해당 메소드의 추상화를 설명하기 위해 추상 클래스 구문을 제공합니다. 예를 들어:
다음과 같이 코드 코드를 복사합니다.
추상 클래스 음식 {
공개 추상 무효 eat();
공공 무효 happyFood();
{
System.out.println("좋아요! 먹어주세요!");
}
}
클래스의 메소드는 위의 eat()과 같이 추상으로 선언될 수 있습니다. 이때 메소드를 구체적으로 정의할 필요는 없으며 메소드의 프로토타입만 제공하면 됩니다. 이는 인터페이스와 유사합니다. 예를 들어 Corn 클래스에서 이 클래스를 상속할 때 eat() 메서드에 대한 구체적인 정의를 제공해야 합니다.
happyFood() 클래스의 또 다른 메소드는 다음과 같습니다.
클래스에 추상 메소드가 나타나면 이 클래스 선언에 abstract 키워드를 추가해야 합니다. 그렇지 않으면 Java에서 오류를 보고합니다. 추상 클래스를 사용하여 객체를 생성할 수 없습니다.
추상 클래스의 상속
클래스처럼 추상 클래스를 상속받을 수 있습니다. 추상 클래스의 추상 메서드를 다루려면 완전한 메서드 정의를 사용해야 합니다. 그렇지 않으면 파생 클래스는 여전히 추상 클래스입니다.
추상 클래스는 정의에 데이터 멤버를 가질 수 있습니다. 데이터 멤버의 상속은 일반 클래스의 상속과 동일합니다.
요약
인터페이스 상속, 다중 상속
추상 메소드, 추상 클래스