1. 程式人生 > 實用技巧 >學習Java的Day03

學習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(); } }