1. 程式人生 > 其它 >Java--interface&&implement 介面

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() {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.父類引用指向子類物件後,用該父類引用呼叫子類重寫的方法,此時多型就出現了。