> Java > java지도 시간 > 본문

Java 기본 - 추상 클래스 및 인터페이스

巴扎黑
풀어 주다: 2017-06-26 11:31:07
원래의
1328명이 탐색했습니다.

추상 클래스와 인터페이스를 함께 사용하는 이유는 구별하기 어렵고 서로 독립적이기 때문입니다. Java 프로그래밍의 세 가지 주요 특성(캡슐화, 상속 및 다형성)을 배운 후 가장 큰 이득은 자체 독립성을 유지하고 끊임없이 발전할 수 있는 Java 언어와 같은 객체 지향 프로그래밍의 장점을 천천히 이해했다는 것입니다. 개발. 캡슐화와 상속이 Java 다형성을 구현하는 기반이라면 개인적으로는 추상 클래스와 인터페이스가 다형성을 매우 잘 지원한다고 생각합니다.

1. 추상 클래스

공식적으로 말하면 추상으로 수정된 클래스는 추상 클래스입니다. 추상 클래스는 불완전하며 기본 클래스로만 사용할 수 있으며 인스턴스화할 수 없습니다(새 클래스일 수 없음).

일반인의 관점에서 보면 추상 클래스는 그 자체로는 아무 것도 하지 않으며 다른 사람이 해당 사양을 구현해야 합니다. 이는 추상 메소드 세트를 정의하며, 이 추상 메소드 세트의 특정 표현식은 파생 클래스에 의해 구현될 수 있습니다. 추상 클래스의 구현은 상속을 사용해야 합니다. 그렇지 않으면 생성해도 의미가 없습니다.

추상 클래스를 사용할 때는 다음 사항에 주의해야 합니다.

1. 추상 클래스는 참조일 뿐이며 인스턴스화 작업을 해당 하위 클래스에 넘겨야 합니다. Rewrite;

3. 클래스에 추상 메서드로 정의된 메서드(추상으로 수정됨)가 있는 경우 클래스는 추상 클래스로 정의되어야 합니다(클래스 이름도 수정해야 함).

4. 추상 클래스에는 구체적인 메서드가 포함될 수도 있고 포함되지 않을 수도 있습니다.

1 public abstract class ChouX {2     public abstract void method1();3 4     public void method2() {5 6     }7 }
로그인 후 복사
5. 하위 클래스의 추상 메서드는 상위 클래스의 추상 메서드와 동일한 이름을 가질 수 없습니다. Abstract는 private, static 또는 fanal과 동일할 수 없습니다. 또는 네이티브와 병렬로 동일한 메서드를 수정할 수 없습니다.

코드 예:

//抽象类public abstract class Animal {public abstract void shout();
}
로그인 후 복사

1 //猫子类2 public class Cat extends Animal {3     public void shout() {4         System.out.println("喵~~");5     }6 }
로그인 후 복사
//Dog子类public class Dog extends Animal {public void shout() {
        System.out.println("汪汪汪。。。");
    }
}
로그인 후 복사
//测试类public class Test {public static void main(String[] args) {
        Animal a1 = new Dog();
        Animal a2 = new Cat();
        a1.shout();
        a2.shout();
    }
}
로그인 후 복사

출력:

2. 인터페이스

프로그래밍, 추상화가 주요 특징입니다. Java에서 OOP 추상화는 추상 클래스와 인터페이스라는 두 가지 형태로 반영될 수 있습니다. 인터페이스는 소프트웨어 엔지니어링에서 일반적으로 다른 사람이 호출하는 메서드나 기능을 의미합니다.

형식:

[public] interface InterfaceName{

}
로그인 후 복사

<span style="color: #0000ff;"><span style="color: #99cc00;">//例子</span><br>interface</span><span style="color: #000000;"> Door{</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">abstract</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> open();</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">abstract</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> close();
}</span>
로그인 후 복사
클래스가 특정 인터페이스 세트를 따르도록 하려면 Implements 키워드를 사용해야 합니다.
형식:

class ClassName은 Interface1, Interface2, Interface3....{}을 구현합니다(클래스가 여러 특정 인터페이스를 따를 수 있음)

3 추상 클래스와 인터페이스의 차이점

1. 차이점첫째, 추상 클래스는 멤버 메서드의 구현 세부 정보를 제공할 수 있지만 인터페이스에는 공용 추상 메서드만 존재할 수 있습니다.

두 번째로 추상 클래스의 멤버 변수는 다양한 유형이 될 수 있지만 인터페이스의 멤버는 Public static final만 가능합니다. type;

게다가 인터페이스는 정적 코드 블록과 정적 메서드를 포함할 수 없지만 추상 클래스는 포함할 수 있습니다.

마지막으로 클래스는 하나의 추상 클래스만 상속할 수 있지만 여러 인터페이스를 상속할 수 있습니다.

2. 디자인 수준의 차이

먼저 추상 클래스는 사물의 추상화, 즉 클래스의 추상화인 반면, 인터페이스는 동작의 추상화입니다.

게다가 추상 클래스는 많은 하위 클래스의 상위 클래스 역할을 하며 템플릿 디자인입니다. 인터페이스는 동작 사양입니다.

마지막으로 추상 클래스에서 메서드를 변경하려는 경우 추상 클래스에서 직접 구현할 수 있으며 하위 클래스에서는 변경할 필요가 없습니다. 인터페이스에 이런 일이 발생하면 이 인터페이스에 연결된 모든 클래스를 변경해야 합니다.

요약: 너무 많이 말했지만 원리를 이해하고 나면 실제로는 매우 간단합니다. 예를 들어 추상 클래스의 경우 추상 클래스를 상위 클래스로 정의합니다. 클래스를 완전히 설명하지 않았거나 몇 년 후에 업그레이드되었을 수도 있습니다. 항상 예약이 있습니다. 이때, 상위 클래스 전체를 전복시키기 위해 전쟁에 나갈 필요는 없으며 하위 클래스의 구체적인 변경 사항만 작성하면 됩니다. 무엇을 변경할지 여부와 언제 변경할지 결정하는 것은 사용자의 몫입니다. 유연성과 재사용성이 향상되지 않을까요? 추상 클래스와 인터페이스의 차이점은 물고기와 배가 물 속에서 헤엄칠 수 있는 것과 같아서 같은 클래스가 아닙니다. 물고기와 보트를 같은 클래스에 넣을 생각조차 하지 마세요. 둘 다 이 "수영" 동작을 가지고 있으므로 이 "수영" 동작을 인터페이스에 설정하여 물고기도 사용할 수 있고 보트도 사용할 수 있습니다. 나중에 "수영"할 수 있는 모든 것을 설명하고 싶을 때 이 단어를 사용할 수 있습니다.

인터넷에 매우 유용한 사례가 있습니다.

추상 클래스와 인터페이스의 차이점을 이해하는 데 도움이 되도록 주의 깊게 생각해 볼 수 있습니다.

1 //接口2 interface Alram{3   void alarm();4 }
로그인 후 복사

1 //抽象类2 abstract class Door{3   void open();4   void close();5 }
로그인 후 복사
1 //报警门最后的设置2 class AlarmDoor extends Door implements Alarm{3   void open(){4   }5   void close(){6   }7   void alarm(){8   }9 }
로그인 후 복사

위 내용은 Java 기본 - 추상 클래스 및 인터페이스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿