Java 인터페이스의 개념과 사용 <br />는 초록 클래스에서 하나 이상의 추상적 인 방법이 포함될 수 있지만 모든 방법은 추상적이어야합니다.
인터페이스 키워드가 선언되며, 이는 클래스가 수행 해야하는 방식을 지정하는 대신 클래스가해야 할 일을 지정하는 특별한 추상 클래스로 간주 될 수 있습니다.
Serial ATA위원회는 Serial ATA 2.0 사양을 지정했습니다. 시리얼 ATA위원회는 하드 드라이브를 생산할 책임이 없지만 공통 사양 만 지정합니다.
Seagate, Hitachi, Samsung 및 기타 제조업체는 사양에 따라 인터페이스를 충족하는 하드 디스크를 생성하며,이 하드 디스크는 160g Hitachi Serial Hard Disk를 사용하는 경우 현재 구매할 수 있습니다 320g Seagate Serial Hard Disk를 설치하십시오.
다음 코드는 Serial ATA위원회를 시뮬레이션하여 다음과 같은 직렬 하드 디스크 인터페이스를 정의 할 수 있습니다.
// 직렬 하드 디스크 인터페이스 공용 인터페이스 SATAHDD {// 공개 정적 최종 int connect_line = 4;참고 : 인터페이스에 선언 된 멤버 변수는 모두 기본적으로 공개 정적 결승이며 초기화되어야합니다. 따라서 상수를 선언 할 때 이러한 수정자를 생략 할 수 있습니다.
인터페이스는 현재 추상 클래스와 유사한 여러 상수 및 추상 방법의 모음입니다. 실제로, 인터페이스는 추상 클래스에서 진화하므로 달리 명시되지 않는 한 인터페이스는 클래스와 동일한 "처리"를 즐깁니다. 예를 들어, 여러 클래스 나 인터페이스를 소스 프로그램에서 정의 할 수 있지만 최대 하나의 공개 클래스 또는 인터페이스가 있으면 소스 파일이 공개 클래스 및 인터페이스와 동일한 이름을 가져야합니다. 클래스의 상속 형식과 마찬가지로 인터페이스가 상속 될 수 있으며 하위 인터페이스는 부모 인터페이스에서 상수와 추상 메소드를 상속하고 새로운 추상 방법을 추가 할 수 있습니다.
그러나 인터페이스에는 다음과 같이 요약 된 자체 특성이 있습니다.
1) 초록 방법만이 방법을 공개 초록에 정의 할 수 있으므로 방법을 선언 할 때 이러한 수정자를 생략 할 수 있습니다. 인스턴스 변수를 정의하려고 시도하면 인터페이스에서 인스턴스가 아닌 인스턴스 메소드 및 정적 메소드가 모두 불법입니다. 예를 들어:
공개 인터페이스 satahdd {// Connectline의 수정 오류; 공개 유형이 되십시오 // 데이터 공개 static string readData () {// 컴파일 오류, 인터페이스에 정적 메소드 리턴 "데이터"를 포함 할 수 없습니다.3) 인터페이스에는 생성자가 없으며 인스턴스화 할 수 없습니다.
4) 하나의 인터페이스는 다른 인터페이스를 구현하지 않지만 다른 인터페이스를 상속 할 수 있습니다. 인터페이스의 다중 상속 기능은 클래스의 단일 상속을 보완합니다. 예를 들어:
// 직렬 하드 디스크 인터페이스 공용 인터페이스 SATAHDD는 A, B {// 공개 정적 최종 int connect_line = 4; } 인터페이스 a {public void a ();} 인터페이스 b {public void b ();}인터페이스를 사용하는 이유
대규모 프로젝트 개발에서는 상속 체인 중간에서 클래스를 삽입하여 서브 클래스가 부모 클래스에 영향을 미치지 않고 특정 기능을 가질 수 있도록해야 할 수도 있습니다. 예를 들어, a -> b-> c -> d-> e, A는 C, D 및 E 클래스에 몇 가지 일반적인 기능을 추가 해야하는 경우 C 클래스가 다른 클래스를 상속하는 것입니다. 수업. 그러나 Java는 단일 상속 언어가 더 이상 상속 체인만을 상속받을 수 없다는 것입니다. 이러한 방식으로, C, D 및 E 클래스에 대한 수정은 전체 상속 체인에 영향을 미치며 플러그가 가능하지 않습니다.
인터페이스는 삽입 가능성을 보장합니다. 상속 체인의 모든 클래스는 인터페이스를 구현할 수 있으며,이 클래스의 모든 서브 클래스에 영향을 미치지만이 클래스의 부모 클래스에는 영향을 미치지 않습니다. 이러한 클래스는이 인터페이스에 의해 지정된 메소드를 구현해야하며, 서브 클래스는이 클래스에서 이러한 방법을 자동으로 상속 할 수 있으며,이 시점에서 이러한 하위 클래스는 플러그 가능하다.
우리가 관심을 갖는 것은 특정 수업이 아니라이 클래스가 필요한 인터페이스를 구현하는지 여부입니다.
인터페이스는 보간 및 메소드 호출을 제공합니다. 소프트웨어 시스템의 규모가 클수록 소프트웨어 시스템의 유연성과 확장 성을 보장합니다.
인터페이스는 객체 지향 Java 프로그래밍에서 중요한 역할을합니다. 실제로 설계 단계에서 가장 중요한 작업 중 하나는 각 부분의 인터페이스를 설계 한 다음 인터페이스의 조합을 통해 프로그램의 기본 프레임 워크 구조를 형성하는 것입니다.
인터페이스 사용
인터페이스 사용은 클래스와 다소 다릅니다. 클래스를 사용해야하는 경우 새 키워드는 직접 클래스 인스턴스를 구축하는 데 사용되지만 인터페이스는 새로운 키워드를 직접 사용하여 인스턴스를 작성할 수 없으므로 인터페이스를 사용할 수 없습니다.
인터페이스는 클래스를 통해 추상 방법을 구현 한 다음 클래스를 인스턴스화해야합니다. 클래스 구현 인터페이스의 키워드는 구현입니다.
클래스가 인터페이스의 모든 추상 방법을 구현할 수없는 경우 클래스는 추상 방법으로 정의되어야합니다.
인터페이스의 인스턴스는 생성 될 수 없지만 인터페이스 유형의 참조 변수를 정의 할 수 있으므로 인터페이스를 구현하는 클래스의 인스턴스를 가리 킵니다.
클래스는 하나의 부모 클래스 만 상속받을 수 있지만 여러 인터페이스를 구현할 수 있습니다.
구현 인터페이스의 형식은 다음과 같습니다.
수정 자 클래스 클래스 이름 확장 부모 클래스는 여러 인터페이스를 구현 {
구현 방법
}
다음 예를 참조하십시오.
static java.lang.system.*; public class demo {public static void main (string [] args) {new Seagatehdd (); Samsung Hard Disk}} // Serial Hard Disk Interface Satahdd {// 공개 정적 최종 int connect_line = 4; ;}// 수리 하드 디스크 인터페이스 fixhdd {// 수리 문자열 주소 = "Beijing, Haidian District"; String readdata () {return "data"}; // Samsung 하드 드라이브 클래스 SAMSUNGHDD는 SATAHDD를 구현합니다. {// return "data"}; 불량 품질의 하드 디스크는 데이터를 작성할 수 없습니다 xxhdd는 satahdd {// 하드 디스크 읽기 데이터 공개 문자열 readData () {return "data");인터페이스를 유형으로 사용하십시오
인터페이스는 인터페이스를 구현하는 클래스의 모든 인스턴스로 사용됩니다 사용되는 클래스 방법이 실제로 해당 구현 클래스 메소드를 호출해야한다고 결정하십시오.
예는 다음과 같습니다.
공개 클래스 데모 {a) {a.dosth (); a); {public int dosth (); 실행 결과 :
이제 b
보시다시피, 인터페이스를 메소드 매개 변수 및 반환 유형으로 사용하여 인터페이스를 유형으로 사용할 수 있습니다.
Java 인터페이스와 추상 클래스 <br /> 클래스의 차이점은 객체 템플릿이며, 추상 클래스와 인터페이스는 콘크리트 클래스의 템플릿으로 간주 될 수 있습니다.
특정 관점에서 볼 때 인터페이스는 특별한 초록 클래스이기 때문에 깊은 연결이 있고 유사성이 크기 때문에 누가 사용해야하는지 혼동하기 쉽습니다. 우리는 먼저 그들이 가진 유사성을 분석합니다.
그들은 모두 나무와 같은 구조의 추상 층을 나타냅니다. 참조 변수를 사용하는 경우 클래스 구조의 초록 계층을 사용하여 방법의 정의 및 구현을 분리하면 느슨하게 결합 된 코드가 있습니다.
그들 중 누구도 인스턴스화 될 수 없습니다.
모두 추상 방법을 포함 할 수 있습니다. 초록 방법은 특정 구현에 대해 신경 쓰지 않고 시스템이 제공하는 기능을 설명하는 데 사용됩니다.
추상 클래스와 인터페이스의 주요 차이점에 대해 이야기 해 봅시다.
1) 초록 클래스는 일부 방법에 대한 구현을 제공하여 서브 클래스에서 이러한 방법을 반복적으로 구현할 수 있으며, 이는 추상 클래스의 장점입니다.
공개 초록 클래스 a {public acpract void method1 (); public void method2 () {// method2}} public class b는 {public void method1 () {// b method1}} {public void를 확장합니다. Method1 () {// c method1}}Abstract Class A에는 두 개의 서브 클래스 B와 C가 있습니다. 서브 클래스의 행동. Method2는 재사용 가능한 코드의 예입니다. A는 방법 1의 구현을 정의하지 않습니다.
인터페이스로 변경하고 다음을 참조하십시오.
public interface a {public void method1 ();} public class b는 {public void method1 () {// b method1} public v oid method2 () {// b method2}} public class c {public void method1 () {// c method1} public void method2 () {// c method2}}을 구현합니다.인터페이스 A는 클래스 B와 C 구현을위한 공개 기능을 제공 할 수 없으므로 A는 B와 C의 동작을 제한 할 수 없음을 의미합니다. B와 C는 특성과 현실적인 방법 1 및 방법 2 방법을 자유롭게 발휘할 수 있으며 인터페이스 A는 제어 능력이 없습니다.
2) 클래스는 직접 부모 클래스 (아마도 추상 클래스) 만 상속받을 수 있지만 클래스는 여러 인터페이스를 구현할 수 있으며 이는 인터페이스의 장점입니다.
인터페이스 a {public void method2 ();} 인터페이스 b {public void method1 ();} class c 구현 a, b {public void method1 () {// c method1} publ ic void method2 () {// c method2} } // C는 매우 유연하게 사용할 수 있으며 C는 다른 인터페이스를 확장하고 구현할 수 있습니다 클래스 B는 A {public acpract void method2 ();} 확장 B {public void method1 () {// c method1} public void method2 () {// c method2}}을 확장합니다.클래스 C의 경우 다른 부모 수업을 물려받을 기회가 없습니다.
요약하면, 인터페이스와 추상 클래스는 인터페이스와 추상 클래스를 선택할 때 고유 한 장점과 단점이 있습니다.
행동 모델은 항상 추상 클래스가 아닌 인터페이스를 통해 정의되어야하므로 인터페이스는 일반적으로 선호되며 초록 클래스는 가능한 한 적은 적은 수의 사용을 사용해야합니다.
추상 클래스를 선택할 때는 일반적으로 다음과 같은 상황입니다. 서브 클래스의 동작을 정의하고 서브 클래스에 대한 일반적인 기능을 제공해야합니다.