추상 클래스:
1. 하나 이상의 추상 메소드를 포함하는 클래스 자체는 추상으로 선언되어야 합니다.
2. 추상 메서드 외에도 추상 클래스에는 구체적인 데이터와 특정 메서드도 포함될 수 있습니다.
3. 추상 클래스 확장을 위한 두 가지 옵션(추상 메서드의 구체적인 구현은 하위 클래스에 있음):
A. 추상 클래스에서 정의 일부 추상 클래스가 있거나 추상 클래스 메서드를 정의하지 않으므로 하위 클래스도 추상 클래스로 표시되어야 합니다.
B. 하위 클래스가 추상이 되지 않도록 모든 추상 메서드를 정의합니다.
4. 직접 인스턴스화할 수는 없지만 간접적으로 사용할 수 있습니다.
5. 클래스가 추상 클래스를 상속하는 경우 클래스에서 선언을 구현해야 합니다. 추상 클래스 추상 메서드
구현되지 않은 경우 자신을 추상 클래스로 선언해야 합니다(질문일 수 있음)
JDK8 인터페이스의 새로운 기능에 대해 이야기해 보겠습니다.
인터페이스는 불가능합니다. 더 이상 추상 메소드만 사용하는 경우 정적이거나 비정적일 수 있는 특정 메소드를 추가할 수 있습니다. 비정적 메소드 앞에 키워드 defualt를 사용하십시오.
정적 메서드는 소켓에서만 참조할 수 있고 비정적 메서드는 구현 클래스에서 인스턴스화한 개체에서만 참조할 수 있습니다. 따라서 두 인터페이스의 정적 메서드 이름이 동일하면 문제가 없으며 인터페이스의 클래스 이름으로만 참조할 수 있습니다.. 비정적 메서드에서는 문제가 발생합니다. 개체가 어떤 인터페이스 메서드를 사용해야 할지 모르기 때문에 컴파일 오류가 발생하기 때문입니다.
다음은 코드 데모입니다
package 面向对象;//JDK8的接口新特性。interface A {public abstract void hehe();//传统抽象方法public static void haha()//静态方法 { System.out.println("haha"); }public default void lala() { System.out.println("lala");//非静态要加关键字default } }public class Test implements A {public static void main(String[] args)//因为不是抽象的所以可以重写也可以直接使用。 { A.haha();//不能被Test调用new Test().lala();//非静态要创建实例使用 } }
마법은 추상 메서드가 존재하고 하위 클래스가 추상 메서드를 재정의하지 않으며 가상 머신이 오류를 보고하지 않는다는 것입니다. 기본 추상 메서드를 작성해야 합니다.
위 내용은 Java의 추상 클래스 인스턴스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!