回答
這個我從一些鏈接複製和粘貼(我先前做的,並與您分享) 可以是能幫助你一點。
1)
interface employee{
class Role{
public String rolename;
public int roleId;
}
Role getRole();
// other methods
}
在上述界面要綁定的作用強類型的僱員接口(employee.Role)。 2)在接口中使用靜態類可以縮短常見的編程片段:檢查對象是否是接口的實例,以及是否調用此接口的方法。請看下面的例子:
public interface Printable {
void print();
public static class Caller {
public static void print(Object mightBePrintable) {
if (mightBePrintable instanceof Printable) {
((Printable) mightBePrintable).print();
}
}
}
}
現在不是這樣做:
void genericPrintMethod(Object obj) {
if (obj instanceof Printable) {
((Printable) obj).print();
}
}
你可以寫:
void genericPrintMethod(Object obj) {
Printable.Caller.print(obj);
}
組織。
在接口中指定一個類將該類直接綁定到該接口 - 使用該接口的客戶端將有權訪問該類及其提供的所有功能。
我已經看到了接口內部類的模式,實際上只在Java 1.4及更低版本中提供了一個枚舉類型以便與接口一起使用 - 因爲接口只能使用類,而類可以受保護,使用該接口的客戶端只能接受在接口中定義的類的實例作爲枚舉值。這只是我能想出的唯一例子 - 我確信有其他人存在,但我很少看到使用的接口中有類。
對於翻轉的情況,它仍然是組織。指定類內的接口表示只有該類應該使用該接口。其他類和接口仍然可以使用該接口(取決於其訪問級別),這不是重點 - 組織將接口的意圖記錄下來 - 僅在包含它的類中使用。
如果它在該類之外有用,它應該適當地移動到它自己的類型。所以,這兩種用法都很少見,但它們的用途主要是通過Java語法直接組織代碼並記錄它的意圖。
我認爲一些代碼片段可能會有所幫助。 – 2011-05-09 17:19:58
我認爲在http://stackoverflow.com/a/10481539/1083704 – Val 2013-04-17 13:42:15
如果在這種情況下任何類的功能都與任何接口緊密關聯,我們會在接口中聲明一個類。
有些時候在接口中提供抽象方法的默認實現也很有用。
在接口中創建類允許程序員對類有限制,即只有在實現該接口時才能訪問內部類。
中給出了一個例子,它不是真的,我們可以在不實現的情況下訪問內部類 - 「InterfaceName.ClassName a = new InterfaceName.ClassName( ); a.print(10);' – 2017-03-21 05:56:22
如果類的功能與接口密切相關,而且我們不打算在任何地方使用該類,那麼我們可以在接口內定義一個類。
package PracticeTest;
public interface VehicleService {
public void repair(Vehicle v);
public class Vehicle{
String vehicleModel;
String vehicleNumber;
public Vehicle(String vehicleModel, String vehicleNumber) {
super();
this.vehicleModel = vehicleModel;
this.vehicleNumber = vehicleNumber;
}
}
}
在上述情況下,VehicleService類可用於VehicleService,我們不在其他地方使用它。
- 提供一個接口的默認實現,我們可以定義一個接口
接口
package PracticeTest;
public interface VehicleService {
public void repair();
public class DefaultVehicle implements VehicleService{
@Override
public void repair() {
System.out.println(" Default Repair");
}
}
實現類
內的類package PracticeTest;
public class busRepair implements VehicleService{
@Override
public void repair() {
System.out.println(" Bus Repair");
}
public static void main(String args[]){
busRepair b = new busRepair();
b.repair();
DefaultVehicle d = new DefaultVehicle();
d.repair();
}
}
- 1. 從接口創建基類
- 2. 創建接口來自類
- 3. Objective-c中的類和類接口有什麼區別?
- 4. C#中的抽象類和接口類有什麼不同?
- 5. 加載Url裏面的JavaScript接口類
- 6. 創建從接口/抽象類和窗口繼承的窗口
- 7. 接口和類
- 8. 通過實現接口創建單例類有什麼好處?
- 9. 爲什麼我們使用接口和抽象類,在什麼情況下應該使用abract類和接口
- 10. 爲什麼使用接口IList創建List類型的對象?
- 11. 用什麼類型的智能指針創建接口?
- 12. 在IValueConverter接口中使用ConvertBack方法有什麼用途?
- 13. 在這裏使用什麼,抽象類或接口?
- 14. 在Typescript中,類型和接口有什麼區別?
- 15. 包含一個「實現」和「接口」指針的C++類的用途是什麼?
- 16. 接口和Java中的類
- 17. vb.net接口和類
- 18. 接口和子類
- 19. 如何使用依賴注入和接口創建連接類?
- 20. TypeScript中的「聲明類」和「接口」有什麼區別
- 21. 創建一個實現接口的類
- 22. 創建接口類java的實例
- 23. 創建接口子類的實例
- 24. 無法創建抽象類或接口接口的實例類型
- 25. 在哪裏把接口類在c + +
- 26. 接口成員爲什麼不能使用私有類類型?
- 27. 爲什麼接口或抽象類有用? (或爲什麼?)
- 28. 使用類和接口有什麼區別?
- 29. Protobuf網創建帶有接口和抽象基類的typemodel
- 30. 在接口中嵌套類有用嗎?
請參閱http://stackoverflow.com/questions/2400828/inner-class-within-interface – 2011-05-09 04:30:49