一、super 和 this的用法
主要解釋一下引用構造函數的用法
super(參數):調用父類中的某一個構造函數(應該為構造函數中的第一條語句)
this(參數):調用本類中另一種形式的構造函數(應該為構造函數中的第一條語句)
實例
運行結果:
父類·無參數構造方法: A Person.
子類·調用父類”無參數構造方法“: A chinese coder.
父類·含一個參數的構造方法: A person's name is codersai
子類·調用父類”含一個參數的構造方法“: his name is codersai
父類·含一個參數的構造方法: A person's name is codersai
子類·調用父類”含一個參數的構造方法“: his name is codersai
子類:調用子類具有相同形參的構造方法:his age is 18
二、接口
接口的聲明(關鍵字interface)
[可見度] interface 接口名稱 [extends 其他的接口名] { // 聲明變量 // 抽象方法 }
interface Animal { public void eat(); public void travel(); }
接口里面的屬性全部是靜態的常量
接口中的方法,全部都是抽象方法
接口的實現類必須全部重寫接口中的所有的抽象方法
作用:如果我們想讓某個類型實現擁有某個功能,我們就可以讓該類型實現這個接口
接口的實現(關鍵字Implements)
當類實現接口的時候,類要實現接口中所有的方法。否則,類必須聲明為抽象的類。
類使用implements關鍵字實現接口。在類聲明中,Implements關鍵字放在class聲明后面。
實現一個接口的語法,可以使用這個公式:
...implements 接口名稱[, 其他接口名稱, 其他接口名稱..., ...] ...
實例
public class MammalInt implements Animal{ //實現了Animal接口 public void eat(){ System.out.println("Mammal eats"); } public void travel(){ System.out.println("Mammal travels"); } public int noOfLegs(){ return 0; } public static void main(String args[]){ MammalInt m = new MammalInt(); m.eat(); m.travel(); } }
以上實例編譯運行結果如下:
Mammal eats Mammal travels
重寫接口中聲明的方法時,需要注意以下規則:
- 類在實現接口的方法時,不能拋出強制性異常,只能在接口中,或者繼承接口的抽象類中拋出該強制性異常。
- 類在重寫方法時要保持一致的方法名,並且應該保持相同或者相兼容的返回值類型。
- 如果實現接口的類是抽象類,那么就沒必要實現該接口的方法。
在實現接口的時候,也要注意一些規則:
- 一個類可以同時實現多個接口。
- 一個類只能繼承一個類,但是能實現多個接口。
- 一個接口能繼承另一個接口,這和類之間的繼承比較相似。
接口的繼承(關鍵字extends)
一個接口能繼承另一個接口,和類之間的繼承方式比較相似。接口的繼承使用extends關鍵字,子接口繼承父接口的方法。
下面的Sports接口被Hockey和Football接口繼承:
public interface Sports { public void setHomeTeam(String name); public void setVisitingTeam(String name); } // 文件名: Football.java public interface Football extends Sports { public void homeTeamScored(int points); public void visitingTeamScored(int points); public void endOfQuarter(int quarter); } // 文件名: Hockey.java public interface Hockey extends Sports { public void homeGoalScored(); public void visitingGoalScored(); public void endOfPeriod(int period); public void overtimePeriod(int ot); }
接口的多繼承
在Java中,類的多繼承是不合法,但接口允許多繼承。
在接口的多繼承中extends關鍵字只需要使用一次,在其后跟着繼承接口。 如下所示:
以上的程序片段是合法定義的子接口,與類不同的是,接口允許多繼承,而 Sports及 Event 可能定義或是繼承相同的方法