陜西建設(shè)網(wǎng)官方網(wǎng)站/鄭州seo線下培訓(xùn)
接口以及抽象類
1. 概述
- 嗨,
【Java 面試合集】
又來了,今天給大家分享的內(nèi)容是接口以及抽象類
。- 一看這個(gè)概念很多人都知道,但是方方面面的細(xì)節(jié)不一定知道哦,今天我們就從方方面面的細(xì)節(jié)來講講
2. 相同點(diǎn):
- 都是上層的抽象層
- 都不能被實(shí)例化
- 都能包含抽象方法,這些抽象的方法用于描述類具備的功能,而沒有具體實(shí)現(xiàn)
3. 不同點(diǎn):
- 接口中定義的成員變量都是公有的靜態(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();
}
接口中定義普通的方法是不能有方法體的,是一個(gè)抽象方法
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("這是一個(gè)static method");}default void cat() {System.out.println("這是一個(gè)被default 修飾的method");}
}
- 接口被普通類實(shí)現(xiàn),抽象類被普通類繼承
- 接口也可以繼承,但只有接口能繼承接口,接口可以實(shí)現(xiàn)多繼承,但是抽象類只能是單繼承
- 接口中不能定義構(gòu)造方法,抽象類可以定義,因?yàn)樽宇惱^承父類的時(shí)候,必須調(diào)用父類的構(gòu)造方法
- 接口可以打破單繼承的問題,然后參數(shù)更加靈活。 一個(gè)類欸可以實(shí)現(xiàn)多個(gè)接口
public class TestClass001 implements TestInter001, TestInter002{
}
一個(gè)普通類可以實(shí)現(xiàn)多個(gè)接口
public interface TestInter001 extends TestInter002, TestInter003 {
}
接口針對(duì)于接口,可以實(shí)現(xiàn)多繼承