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() {return name;} @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.父類引用指向子類對象后,用該父類引用調用子類重寫的方法,此時多態就出現了。