java基礎學習筆記二(接口、super、this)


一、super 和 this的用法

  主要解釋一下引用構造函數的用法

  super(參數):調用父類中的某一個構造函數(應該為構造函數中的第一條語句)

  this(參數):調用本類中另一種形式的構造函數(應該為構造函數中的第一條語句)

  實例

class Person {
public static void prt(String s) {
     System.out.println(s);
}
    Person() {
        prt("父類·無參數構造方法: "+"A Person.");
}//構造方法(1)
    Person(String name) {
         prt("父類·含一個參數的構造方法: "+"A person's name is " + name);
}//構造方法(2) }
public class Chinese extends Person {
    Chinese() {
        super(); // 調用父類構造方法(1)
        prt("子類·調用父類"無參數構造方法": "+"A chinese coder.");
}
    Chinese(String name) {
        super(name);// 調用父類具有相同形參的構造方法(2)
        prt("子類·調用父類"含一個參數的構造方法": "+"his name is " + name);
}
    Chinese(String name, int age) {
         this(name);// 調用具有相同形參的構造方法(3)
         prt("子類:調用子類具有相同形參的構造方法:his age is " + age);
 
public static void main(String[] args) {
    Chinese cn = new Chinese();
    cn = new Chinese("codersai");
    cn = new Chinese("codersai", 18); }
}

運行結果:
父類·無參數構造方法: 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關鍵字只需要使用一次,在其后跟着繼承接口。 如下所示:

public interface Hockey extends Sports, Event

以上的程序片段是合法定義的子接口,與類不同的是,接口允許多繼承,而 Sports及 Event 可能定義或是繼承相同的方法


免責聲明!

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



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