學習Java的Day03
阿新 • • 發佈:2020-06-27
介面的特點!!!!
-
介面不能建立物件
-
介面的變數使用public static final修飾,如果不寫預設新增;
-
介面的方法為public abstrict,如果不寫預設新增;
-
子類必須重寫介面中所有的抽象方法後,才能建立物件;
-
如果子類不能夠重寫所有的抽象方法,子類必須定義成抽象類;
介面和抽象類的區別!!!!!
- 相同點
- 都是位於繼承的頂端,用於被其他類繼承;
- 都不能直接例項化物件;
- 都包含了抽象方法,其他子類都必須覆寫這些抽象方法;
- 區別
- 抽象類可以定義非抽象方法,避免子類重複實現這些方法,提高程式碼的複用性,介面只能包含抽象方法;
- 一個類只能繼承一個直接父類,卻可以實現多個介面。(介面彌補了Java的單繼承)
- 類與類之間只能是單繼承,介面與介面之間可以是多實現;
- 抽象類可以定義普通的成員變數,介面只能定義 public static final 的成員變數;
練習題:
定義一個類是員工,員工有id和name屬性,有一個方法是eat呼叫eat所有員工輸出吃飯,有一個抽象方法是work,不同的員工工作的內容不同,定義3個類,程式設計師,老師,網管,分別呼叫work的時候”id為xx的name寫程式碼”,”講課”,”拉網線”。publicabstract 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(); } }