Java--interface&&implement 介面
interface&&implement
龍哥說這兩個都是介面的意思,interface是名詞可以理解成一個抽象類,用來定義一些方法體和屬性
而implement則是動詞,可以理解成對interface的實現。
這裡寫一個interface抽象介面類MyInterface
package interfaces; public abstract interface MyInterface { //對屬性進行宣告和初始化並且後期不可更改 public static final int id=666; public static final String name="Saul";//宣告抽象方法 public abstract void set_id(int a); public void set_name(String str); //預設為public abstract ,不加字首也OK public abstract void test(); public void print(); }
然後在寫一個RealInterface類來實現它
package interfaces; public class RealInterface implements MyInterface{ private double height;public void print() { System.out.println("Here is override"); System.out.println("He's height is "+height+"m"); System.out.println("這個一個重寫interface的方法"); } public void set_height(double h){height = h;} public int get_id() {return id;} public String get_name() {returnname;} @Override public void set_id(int a) { } @Override public void set_name(String str) { } //必須重寫方法,哪怕只是一個空的方法體 @Override public void test() { } public static void main(String[] args) { RealInterface m = new RealInterface(); m.set_height(1.78); System.out.println("Erichas's id is "+m.get_id()); System.out.println("Erichas's name is "+m.get_name()); m.print(); } }
在實現介面的時候,必須重寫抽象介面中的所有方法,即使他是一個空的方法。
重寫的時候要保證方法的形參這些型別也是一致的,否則就會報錯。
而且一個類可以去實現多個介面,但是extend只能有一個,就好比
龍哥有可以有多個女性朋友,但是隻能有一個女朋友。
MyInterface介面是抽象的,不能被直接例項化,那麼想用它的例項化物件怎麼辦呢?
如果直接用MyInterface來例項化,就會給你自動補全裡面的方法重寫
這樣就很繁瑣,我們可以直接例項化MyInterface抽象類的實現類RealInterface
下面兩種這樣寫都是可以的
執行結果
extends 繼承
簡單提一下
1.父類也稱作超類、基類、派生類等。
2 Java中只有單繼承,沒有像C++那樣的多繼承。多繼承會引起混亂,使得繼承鏈過於複雜,系統難於維護。
3. Java中類沒有多繼承,介面有多繼承。
4.子類繼承父類,可以得到父類的全部屬性和方法(除了父類的構造方法)
但不見得可以直接訪問(比如,父類私有的屬性和方法)。
5.如果定義一個類時,沒有呼叫extends,則它的父類是: java.lang.Object
java構造方法,指的是類構造物件時呼叫的方式,通常用來例項化物件。Java構造方法,分為有參構造方法,以及無參構造方法
比如在 Person test = new Person()這就是呼叫的預設無參構造方法
網上參考:
構造方法的方法名必須與類名一樣。
構造方法沒有返回型別,也不能定義為void,在方法名前面不宣告方法型別。
構造方法不能作用是完成物件的初始化工作,他能夠把定義物件時的引數傳遞給物件的域。
構造方法不能由程式設計人員呼叫,而要系統呼叫。
構造方法可以重寫,以引數的個數,型別,或排序順序區分。
這裡寫個Person類
package interfaces; public class Person { String test = "繼承父類測試\n"; private String benz; final String lasts = "你的座駕是:"; //重寫構造方法 public Person(){ benz = "Mecedes"; } //獲取構造方法賦值後的變數 public String get_car(){ return this.benz; } }
然後Extends類是它的子類
package interfaces; public class Extends extends Person{ public static void main(String args[]){ Extends my = new Extends(); System.out.println(my.test+my.lasts); System.out.println(my.get_car()); } }
執行結果:
順便一提多型的概念
1.多型是方法的多型,不是屬性的多型(多型與屬性無關).
2.多型的存在要有3個必要條件:繼承,方法重寫,父類引用指向子類物件。
3.父類引用指向子類物件後,用該父類引用呼叫子類重寫的方法,此時多型就出現了。