程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JAVA基礎培訓(8),認識接口

JAVA基礎培訓(8),認識接口

編輯:關於JAVA

這講我們來重點熟悉接口的使用,包括接口的聲明,繼承,屬性的定義以及類的實現 等。

最終的目錄結構

先看相關的代碼

lession8/Lession8.java

package lession8;
import lession8.otherpackage.InterfaceOtherPackagePublic;
/**
* 老紫竹JAVA基礎培訓(8),認識接口。<br>
*
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public class Lession8 {
  public static void main(String[] args) {
   // 可以直接使用接口的屬性
   System.out.println(Test1.Number1);
   // final類型是不能修改的
   // Test1.Number2 ++;
  }
}
/**
* 實現本package的接口
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
class Test1 implements InterfaceSamePackage {
  // 接口的方法必須是public的
  // 雖然那面沒寫,但也是,這是規定
  // 實現的方法也必須是public的
  // 不寫或者protected或者private都是錯誤的
  @Override
  public void testA() {
  }
  @Override
  public void testB() {
  }
}
/**
* 實現其它package的接口。<br>
* 對接口裡面的方法實現同樣必須是public的。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
class Test2 implements InterfaceOtherPackagePublic {
}
class Test3 implements InterfaceSamePackageAbstract {
  @Override
  public void testA() {
  }
}
/**
* 類可以實現多個接口.<br>
* 即使那些接口之間已經存在繼承關系也沒問題。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
class Test4 implements InterfaceOtherPackagePublic,
   InterfaceSamePackageAbstract, InterfaceSamePackageExtends {
  // 你要實現的方法是這些接口要求實現的總和
  // 也就是每個接口裡的方法你都必須實現
  // #######################
  // #### 注意,############
  // #######################
  // InterfaceSamePackage 和 InterfaceSamePackageAbstract
  // 我們有2個接口定義了各自的方法,但名字和參數(類型和順序)完全相同
  // 我們的實現只需要有一個就行了
  // 如果2個接口要實現的功能不一樣,強烈建議不要用相同的名字和參數
  // 這屬於設計問題,很嚴重的設計問題。
  @Override
  public void testA() {
  }
  @Override
  public void testB() {
  }
}
/**
* 如果你這個類只能實現所有接口的部分功能,可以用abstract類。<br>
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
abstract class Test5 implements InterfaceOtherPackagePublic,
   InterfaceSamePackageAbstract, InterfaceSamePackageExtends {
  @Override
  public void testB() {
  }
}

lession8/InterfaceSamePackage.java

package lession8;

/**

* 接口例子A.

*

* @author 老紫竹 JAVA世紀網(java2000.net)

*

*/

public interface InterfaceSamePackage {

// 接口裡面聲明的屬性

// 默認必須是 public static final 的

// 無論你怎麼寫,結果都一樣

// 不能使用 protected 修飾

// 以下幾種寫法無任何區別,結果都是一樣的。

public static final int Number = 0;

int Number1 = 1;

public int Number2 = 2;

public final int Number3 = 3;

final int Number4 = 4;

static int Number5 = 5;

// 對象類型必須初始化。

public static final String name = "java2000.net";

void testA();

public void testB();

}

lession8/InterfaceSamePackageAbstract.java

package lession8;
/**
* 其它package的default類型的接口。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
abstract interface InterfaceSamePackageAbstract {
  public void testA();
}

lession8/otherpackage/InterfaceOtherPackagePublic.java

package lession8.otherpackage;
/**
* 其它package的public類型的接口。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public interface InterfaceOtherPackagePublic {
}

lession8/otherpackage/InterfaceOtherPackageDefault.java

package lession8.otherpackage;
/**
* 其它package的默認類型的接口。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
interface InterfaceOtherPackageDefault {
}

lession8/InterfaceSamePackageExtends.java

package lession8;
import lession8.otherpackage.InterfaceOtherPackagePublic;
/**
* 接口可以繼承接口.<br>
* 請注意是extends 接口,不是implements.<br>
* 只有類(class)才能 implements 接口。<br>
* 一個接口可以同時繼承多個接口。
*
* @author 老紫竹 JAVA世紀網(java2000.net)
*
*/
public interface InterfaceSamePackageExtends extends
   InterfaceSamePackageAbstract, InterfaceSamePackage,
   InterfaceOtherPackagePublic {
}

測試,請注意每次測試後恢復現場。‘

1 嘗試把接口的方法改成 protected 看看編譯錯誤

2 嘗試繼承別的package的默認接口,看看編譯錯誤

3 去掉 main方法裡的那個注釋,看看編譯錯誤

Test1.Number2 ++;

4 嘗試在接口裡聲明一個對象屬性,不初始化,看看編譯錯誤

提示:

1 接口的方法都是public的,不能使用protected 修飾符

2 接口的屬性都是 public static final 的,不允許修改

3 接口的對象屬性必須初始化

差不多了,我能想到的關於接口的東西就這麼多了,如果我以後發現了什麼漏掉的, 我會編輯這個帖子,並在回復裡寫上更新。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved