學習Java的Day03

接口的特色!!!!

  • 接口不能建立對象

  • 接口的變量使用public static final修飾,若是不寫默認添加;

  • 接口的方法爲public abstrict,若是不寫默認添加;

  • 子類必須重寫接口中全部的抽象方法後,才能建立對象;

  • 若是子類不可以重寫全部的抽象方法,子類必須定義成抽象類;

 

接口和抽象類的區別!!!!!

  • 相同點
    • 都是位於繼承的頂端,用於被其餘類繼承;
    • 都不能直接實例化對象;
    • 都包含了抽象方法,其餘子類都必須覆寫這些抽象方法;
  • 區別
    • 抽象類能夠定義非抽象方法,避免子類重複實現這些方法,提升代碼的複用性,接口只能包含抽象方法;
    • 一個類只能繼承一個直接父類,卻能夠實現多個接口。(接口彌補了Java的單繼承)
    • 類與類之間只能是單繼承,接口與接口之間能夠是多實現;
    • 抽象類能夠定義普通的成員變量,接口只能定義 public static final 的成員變量;

  

練習題:程序員

定義一個類是員工,員工有id和name屬性,有一個方法是eat調用eat全部員工輸出吃飯,有一個抽象方法是work,不一樣的員工工做的內容不一樣,定義3個類,程序員,老師,網管,分別調用work的時候」id爲xx的name寫代碼」,」講課」,」拉網線」。
public abstract class Employee {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void eat() {
        System.out.println("該吃飯");
    }

    public abstract void work();

}

class programmer extends Employee {

    @Override
    public void work() {
        System.out.println("id : " + getId() + " 的 " + getName() + "寫代碼");
    }

}
class Teacher extends Employee {

    @Override
    public void work() {
        System.out.println("id : " + getId() + " 的 " + getName() + "講課");
    }

}
class Managert extends Employee {

    @Override
    public void work() {
        System.out.println("id : " + getId() + " 的 " + getName() + "拉網線");
    }

}
class  Test {
    public static void main(String[] args) {

        programmer pro = new programmer();
        pro.setId(001);
        pro.setName("zxh" );
        pro.work();
        pro.eat();

    }
}
相關文章
相關標籤/搜索