캡슐화 및 인터페이스에서 private 키워드는 객체의 내부 멤버를 캡슐화합니다. 캡슐화 후 제품은 내부 세부 정보를 숨기고 사용자 인터페이스만 제공합니다.
인터페이스는 우리의 추상적 사고를 도울 수 있는 매우 유용한 개념입니다. 실생활에서 우리는 특정 기기를 생각할 때 그 기기의 기능적 인터페이스를 떠올리는 경우가 많습니다. 예를 들어 컵의 경우, 우리는 컵의 재질과 가격에 대해 생각하는 것보다 물을 추가하고 물을 마실 수 있는 가능성에 대해 더 많이 생각합니다. 즉, 어느 정도 기기의 인터페이스는 기기 자체와 동일합니다. 내부 세부 사항은 사고 과정에서 삭제되었습니다.
한 잔을 염두에 두고
퍼블릭 및 프라이빗 캡슐화 메커니즘에서는 실제로 클래스와 인터페이스를 동시에 정의하고 클래스와 인터페이스를 함께 혼합합니다. Java는 인터페이스 구문도 제공합니다. 이 구문은 인터페이스를 클래스의 특정 정의와 분리하고 독립적인 본문을 형성합니다.
인터페이스
컵을 예로 들어 컵 인터페이스를 정의합니다.
다음과 같이 코드 코드를 복사합니다.
인터페이스 컵 {
void addWater(int w);
void drinkWater(int w);
}
Cup 인터페이스는 addWater() 및 drinkWater()라는 두 가지 메소드의 프로토타입을 정의합니다. 메소드의 프로토타입은 메소드 이름, 매개변수 목록 및 반환 유형을 지정합니다. 프로토타입은 이러한 방법을 사용하는 방법을 외부 세계에 알려줄 수 있습니다.
인터페이스에서 우리는
1. 메소드 본문을 정의할 필요가 없습니다.
2. 메소드의 가시성을 지정할 필요가 없습니다.
두 번째 점은 인터페이스의 메소드가 기본적으로 공개된다는 것입니다. 캡슐화 및 인터페이스에서 언급했듯이 클래스의 공개 메서드는 인터페이스를 구성합니다. 따라서 인터페이스에 나타나는 모든 메서드는 기본적으로 공개됩니다.
아래 MusicCup(음악을 재생할 수 있는 컵)과 같은 클래스 정의에서 인터페이스를 구현할 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
클래스 MusicCup은 Cup을 구현합니다.
{
공공 무효 addWater(int w)
{
this.water = this.water + w;
}
공공 무효 음료수(int w)
{
this.water = this.water - w;
}
개인 정수 물 = 0;
}
인터페이스를 구현하기 위해 Implements 키워드를 사용합니다. 인터페이스가 클래스에 구현되면 인터페이스의 모든 메소드(addWater() 및 drinkWater())가 클래스에 정의되어야 합니다. 클래스의 메서드는 인터페이스의 메서드 프로토타입과 일치해야 합니다. 그렇지 않으면 Java에서 오류를 보고합니다.
인터페이스에서 언급되지 않은 다른 공용 메서드는 클래스에서 정의할 수 있습니다. 즉, 인터페이스는 구현해야 하는 최소 인터페이스를 지정합니다. 예를 들어, 다음 waterContent() 메소드는 Cup 인터페이스에서 프로토타입을 지정하지 않습니다.
다음과 같이 코드 코드를 복사합니다.
클래스 MusicCup은 Cup을 구현합니다.
{
공공 무효 addWater(int w)
{
this.water = this.water + w;
}
공공 무효 음료수(int w)
{
this.water = this.water - w;
}
공개 정수 waterContent()
{
이것을 반환하십시오.물;
}
개인 정수 물 = 0;
}
별도의 인터페이스의 의미
우리는 인터페이스를 사용했지만 이 인터페이스는 클래스를 정의할 때 작업량을 줄이지 않았습니다. 여전히 이전처럼 구체적으로 클래스를 작성해야 합니다. 우리는 인터페이스의 규칙을 위반하지 않도록 더욱 주의해야 합니다. 이 경우 인터페이스를 사용하는 이유는 무엇입니까?
실제로 인터페이스는 업계 표준과 같습니다. 팩토리(클래스)는 산업 표준(인터페이스 구현)을 채택할 수도 있고 채택하지 않을 수도 있습니다. 그러나 산업 표준을 채택한 제품에는 다음과 같은 이점이 있습니다.
1. 더 높은 품질: 물 첨가 기능이 없는 컵은 표준을 충족하지 않습니다.
2. 더 쉬운 홍보: 컴퓨터의 USB 인터페이스와 마찬가지로 다운스트림 제품을 더 쉽게 연결할 수 있습니다.
이미 Java 프로그램이 있는 경우 어린이에게 물을 마시게 하는 등 Cup 인터페이스를 준수하는 개체를 처리하는 데 사용됩니다. 그런 다음 어린이의 컵(객체)에 대한 Cup 인터페이스를 구현한다고 확신하는 한 어린이가 물을 마시는 작업을 수행할 수 있음을 보장할 수 있습니다. 이 컵(오브젝트)이 물을 마시는 동작을 구체적으로 어떻게 정의하는지는 해당 클래스에 맡기고 결정하도록 할 수 있습니다(예: 빨대로 마시거나, 작은 입을 벌려 마시는 등).
컴퓨터 과학에서 인터페이스는 매우 중요한 개념입니다. 예를 들어, UNIX 인터페이스를 제공하는 모든 운영 체제를 UNIX 시스템이라고 부를 수 있습니다. Linux, Mac OS 및 Solaris는 모두 UNIX 시스템이며 유사한 인터페이스를 제공합니다. 그러나 각 시스템의 구체적인 구현(소스 코드)은 서로 다릅니다. Linux는 오픈 소스이므로 코드의 모든 줄을 볼 수 있지만 여전히 Solaris 시스템을 프로그래밍하는 방법을 모릅니다.
동일한 UNIX 인터페이스
다중 인터페이스 구현
클래스는 둘 이상의 인터페이스를 구현할 수 있습니다. 예를 들어 다음과 같은 인터페이스가 있습니다.
다음과 같이 코드 코드를 복사합니다.
인터페이스 MusicPlayer {
무효 플레이();
}
MusicCup 클래스를 다시 생각해 보겠습니다. 뮤직컵은 플레이어와 컵의 하이브리드로 볼 수 있습니다.
따라서 MusicCup에는 두 가지 인터페이스 세트가 있어야 합니다. 즉, MusicPlayer 인터페이스와 Cup 인터페이스를 동시에 구현해야 합니다.
다음과 같이 코드 코드를 복사합니다.
MusicCup 클래스는 MusicPlayer, Cup을 구현합니다.
{
공공 무효 addWater(int w)
{
this.water = this.water + w;
}
공공 무효 음료수(int w)
{
this.water = this.water - w;
}
공개 무효 플레이()
{
System.out.println("la...la...la");
}
개인 정수 물 = 0;
}
마지막으로 이 기사의 인터페이스와 클래스 정의를 동일한 파일에 넣고 Test 클래스를 작성하고 실행해 볼 수 있습니다.
요약
인터페이스, 메소드 스테레오타입, 공개
인터페이스 구현
인터페이스1, 인터페이스2 구현