色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java虛類和接口的區(qū)別

在Java編程中,抽象類和接口是很常見(jiàn)的兩個(gè)概念。雖然它們都是用于實(shí)現(xiàn)多態(tài)性的對(duì)象,但是它們之間存在一些不同點(diǎn)。下面我們就來(lái)看看Java中虛類和接口有哪些區(qū)別。

1. 實(shí)現(xiàn)方式不同

抽象類:
public abstract class AbstractClass {}
接口:
public interface Interface {}

從代碼上看,抽象類是一個(gè)class,通過(guò)abstract關(guān)鍵字來(lái)定義它是抽象的。而接口是一個(gè)interface,通過(guò)interface關(guān)鍵字來(lái)定義它是接口。也就是說(shuō),抽象類可以擁有自己的構(gòu)造函數(shù),而接口則沒(méi)有。

2. 方法實(shí)現(xiàn)方式不同

抽象類:
public abstract void abstractMethod();
接口:
public void interfaceMethod();

抽象類中可以定義抽象方法,用abstract關(guān)鍵字修飾,而接口中的方法默認(rèn)就是抽象的。在抽象類中,可以有非抽象的方法,而接口中只能定義抽象方法。

3. 繼承約束不同

抽象類:
public abstract class FatherClass {
public abstract void abstractMethod();
public void nonAbstractMethod(){
System.out.println("I'm non-abstract");
} 
}
public class SonClass extends FatherClass {
public void abstractMethod(){
System.out.println("I'm abstract");
}
}
接口:
public interface GrandfatherInterface {
public void interfaceMethod();
}
public interface FatherInterface extends GrandfatherInterface {
public void interfaceMethod();
}
public class SonClass implements FatherInterface {
public void interfaceMethod(){
System.out.println("I'm interface");
}
}

在Java中,一個(gè)類只能繼承一個(gè)抽象類,但是一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。當(dāng)子類繼承一個(gè)抽象類時(shí),需要實(shí)現(xiàn)其中聲明的抽象方法和非抽象方法。而當(dāng)一個(gè)類實(shí)現(xiàn)一個(gè)接口時(shí),必須重寫接口里的所有方法。

結(jié)論

虛類和接口都是用于實(shí)現(xiàn)Java中的多態(tài)性。但是它們之間的區(qū)別主要體現(xiàn)在實(shí)現(xiàn)方式、方法實(shí)現(xiàn)方式和繼承約束上。在編程時(shí)需要根據(jù)實(shí)際需求來(lái)選擇使用抽象類還是接口。