陜西建設網官方網站/鄭州seo線下培訓
接口以及抽象類
1. 概述
- 嗨,
【Java 面試合集】
又來了,今天給大家分享的內容是接口以及抽象類
。- 一看這個概念很多人都知道,但是方方面面的細節(jié)不一定知道哦,今天我們就從方方面面的細節(jié)來講講
2. 相同點:
- 都是上層的抽象層
- 都不能被實例化
- 都能包含抽象方法,這些抽象的方法用于描述類具備的功能,而沒有具體實現(xiàn)
3. 不同點:
- 接口中定義的成員變量都是公有的靜態(tài)常量, 但是抽象類中可以定義普通的成員變量
public interface TestInterface {public final static int age = 10;
}
接口中定義public final static 冗余
public abstract class TestClass {int age = 10;
}
抽象類中可以任意定義成員變量
- 接口中的方法都是公共的抽象方法,抽象類中可以定義普通方法
public interface TestInterface {void eat();
}
接口中定義普通的方法是不能有方法體的,是一個抽象方法
public abstract class TestClass {public void eat() {System.out.println("eat()");}
}
抽象類中是可以定義普通方法的
- 從JDK1.8 開始接口中可以定義靜態(tài)方法以及被default修飾的方法
public interface TestInterface {static void say() {System.out.println("這是一個static method");}default void cat() {System.out.println("這是一個被default 修飾的method");}
}
- 接口被普通類實現(xiàn),抽象類被普通類繼承
- 接口也可以繼承,但只有接口能繼承接口,接口可以實現(xiàn)多繼承,但是抽象類只能是單繼承
- 接口中不能定義構造方法,抽象類可以定義,因為子類繼承父類的時候,必須調用父類的構造方法
- 接口可以打破單繼承的問題,然后參數(shù)更加靈活。 一個類欸可以實現(xiàn)多個接口
public class TestClass001 implements TestInter001, TestInter002{
}
一個普通類可以實現(xiàn)多個接口
public interface TestInter001 extends TestInter002, TestInter003 {
}
接口針對于接口,可以實現(xiàn)多繼承