介面和多型
什麼是介面:當一個抽象類,如果抽象類中的所有方法都是抽象的,那麼我們就可以把它定義成介面。接口裡面寫的,全是抽象的方法,並且在接口裡面不能被例項化,只能被別的類繼承其介面重寫。而且被其他類繼承了這個介面之後,類中必須得重寫介面中的所有方法!!!介面是對行為的抽象,類是對屬性和行為的抽象。介面表示一個完全抽象類,其成員變數為常量,應該定義為public final static.如果成員變數前沒有新增修飾符,系統會預設修飾符為public final static.所有的方法為public abstract抽象方法
語法 interface 介面名 { 方法的定義。 }
public interface Chouyan { float PI=3.14f; ( public final static是預設的,這隻侷限於介面類中) public abstract void Chou(); public void sleep(); }
在介面中,每一個方法的定義都是抽象的,可以省略abstract。 介面不可以直接被例項化。需要有類來實現介面,實現介面的語法為:
public class 類名 implements 介面名 ,介面名,…{
//實現每一個介面的方法
}
public class Erzi extends Person implements Chouyan{ @Override public void Chou() { System.out.println("張浩在抽菸!"); } @Override public void sleep() { System.out.println("張浩在睡覺!"); }
Erzi 繼承了Person類 然後實現了Chouyan介面 實現了Chouyan介面之後,必須得重寫Chouyan接口裡面所有的抽象方法。!!!(記住是所有,接口裡面有多少個方法就重寫多少個!)
在介面中可以定義屬性,可以通過介面中的實現類的例項來訪問,還可以通過介面名來訪問,介面中的屬性不能修改,我們介面中的屬性預設都是final static 的,通常在介面中定義屬性把它作為常量,常量的名字規範是單詞大寫。
介面和抽象類的區別: 1:接口裡面的所有方法都是抽象的,抽象類裡面的方法可以是抽象的也可以不抽象。 2:介面和抽象類都不能被例項化,介面需要類來實現後例項化實現類。抽象類需要類來繼承然後實現子類。 3:抽象類只能單繼承(包括普通類也是隻能單繼承),介面也可以單繼承介面,介面可以多實現。 4:介面中的變數屬性是final static型別的,抽象類中的屬性跟普通類中的屬性沒用區別 5:介面中的方法預設是抽象的不需要加abstract, 抽象類中的抽象方法需要新增abstract關鍵字。