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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM