本篇文章帶給大家的內容是關於java介面和抽象類別的介紹(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
介面:
(1)介面內定義的變數都是public static final類型的,無論是否顯示限定這些修飾符,且必須被明確初始化,否則報錯:
public interface Interface1 { /** * VARIABLE1显式添加public static final修饰符 * VARIABLE2隐式含有public static final修饰符 */ public static final String VARIABLE1="AAA"; String VARIABLE2="BBB"; /** * VARIABLE3未显式初始化,代码变异报错: * The blank final field VARIABLE3 may not have been initialized */ String VARIABLE3; }
(2)介面內定義的方法都是抽象方法,即不包含任何方法實作:
a.如果實作介面的類別是普通類別(非抽象類別),則要實作該介面的所有方法,否則編譯報錯;
b.如果實作介面的類別是抽象類,則可以只實作該介面的部分方法,否則拋出例外;
public interface Interface2 { /** * method1方法定义显式添加public abstract修饰符 * method2方法隐式含有public abstract修饰符,两个方法都是抽象方法 */ public abstract String method1(); String method2(); }
/** * 普通类Class1实现Interface2接口,必须实现所有接口方法 * */ public class Class1 implements Interface2 { @Override public String method1() { // TODO Auto-generated method stub return null; } @Override public String method2() { // TODO Auto-generated method stub return null; } }
##
/** * 抽象类Class2实现Interface2接口,可以只实现方法method1 */ public abstract class Class2 implements Interface2 { @Override public String method1() { // TODO Auto-generated method stub return null; } }抽象類別:(1)
抽象類別也是類,跟一般類別一樣可以有普通的變數、帶實現的方法,可以有構造函數,但不能被實例化,只能用來繼承;
普通方法必須帶方法體,抽象方法不能帶方法體;public abstract class AbstractClass1 { String variable1;//普通变量 public static final String VARIABLE2="AAA";//定义静态常量 public void method1(){ }//普通方法,必须有方法体 abstract void method2();//抽象方法,不能有方法体 AbstractClass1(){//可以定义构造函数,但抽象类不能实例化,只能被继承 System.out.println("此为构造函数"); } }接口和抽象類別還有一個最大的不同,
一個類別可以實現多個接口,但只能繼承一個類別;
#在實際應用中,接口是最常用的,如果多個介面的實作有公共的部分,則可以考慮將這部分內容提取到抽象類別中,然後繼承該抽象類別。也就是說,抽象類別提供公共方法的實現,可以快速開發且統一管理,並允許你的類別完全實現自己的所有方法,不會出現緊密耦合的問題。以上是java介面和抽象類別的介紹(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!