/**
* 1.接口使用interface關鍵字來定義的
* 2.java中,接口和類是并列的結構
* 3.如何定義接口:定義接口中的成員
* 3.1 JDK7及以前:隻能定義全局常量和抽象方法
* >全局常量:public static final的,但是書寫時可省略不寫(預設為public static final的)
* >抽象方法:public abstract的
*
* 3.2 JDK8及以後:除了定義全局常量和抽象方法外,還可以定義靜态方法、預設方法
* 4.接口中不能定義構造器,意味着接口不可以執行個體化
* 5.java開發中,接口都是通過類去實作(implements)的方式來使用。
* 如果實作類覆寫了接口中的所有抽象方法,則此實作類可以執行個體化。
* 如果實作類沒有覆寫接口中的所有抽象方法,則此實作類仍為一個抽象類
* 6.java類可以實作多個接口----->彌補了java單繼承性的局限性。
* >格式:class AA extends BB implements CC,DD,EE
* 7. 接口與接口之間可以繼承,而且可以多繼承,
* ********************************
* 8.接口的具體使用,展現多态性
* 9.接口,實際上可看作是一種規範
*
* 面試題:抽象類與接口有哪些異同?
*
*/
1 package com.fu.java2;
2
3
4 public class InterfaceTest {
5 public static void main(String[] args) {
6 System.out.println(Flyable.MAX_SPEED);
7 System.out.println(Flyable.MIN_SPEED);
8 Plane plane = new Plane();
9 plane.fly();
10 }
11 }
12
13 interface Flyable{
14 //全局常量
15 public static final int MAX_SPEED = 7900;//第一宇宙速度
16 int MIN_SPEED = 1;//省略了public static final
17
18 //抽象方法
19 public abstract void fly();
20 void stop();//省略了public abstract
21
22 }
23
24 interface Attackable{
25 void attack();
26 }
27
28 class Plane implements Flyable{
29
30 @Override
31 public void fly() {
32 System.out.println("飛機通過引擎起飛");
33 }
34
35 @Override
36 public void stop() {
37 System.out.println("駕駛員減速停止");
38 }
39
40 }
41
42 class Bullet extends Object implements Flyable,Attackable{
43
44 @Override
45 public void fly() {
46
47 }
48
49 @Override
50 public void stop() {
51
52 }
53
54 @Override
55 public void attack() {
56
57 }
58 }
59
60 interface AA{
61 void method1();
62 }
63 interface BB{
64 void method2();
65 }
66 interface CC extends AA,BB{
67
68 }
package com.fu.java2;
/**
*接口的使用
* 1.接口使用上也滿足多态性
* 2.接口實際上就是定義了一種規範
* 3.開發中,體會面向接口程式設計0
*
*
*/
public class USBTest {
public static void main(String[] args) {
Computer computer = new Computer();
//1.建立了接口的非匿名實作類的非匿名對象
Flash flash = new Flash();
computer.transferDate(flash);
//2.建立了接口的非匿名實作類的匿名對象
computer.transferDate(new Printer());
//3.建立了接口的匿名實作類的非匿名對象
USB phone = new USB() {
@Override
public void start() {
System.out.println("手機開始工作");
}
@Override
public void stop() {
System.out.println("手機結束工作");
}
};
computer.transferDate(phone);
//4.建立了接口的匿名實作類的匿名對象
computer.transferDate(new USB() {
@Override
public void start() {
System.out.println("MP3開始工作");
}
@Override
public void stop() {
System.out.println("MP3手機結束工作");
}
});
}
}
class Computer{
public void transferDate(USB usb){// USB usb = new Flash();
usb.start();
System.out.println("具體的傳輸資料的細節");
usb.stop();
}
}
interface USB{
//常量:定義了長、寬、最大最小的傳輸速度等
void start();
void stop();
}
class Flash implements USB{
@Override
public void start() {
System.out.println("U盤開啟工作");
}
@Override
public void stop() {
System.out.println("U盤結束工作");
}
}
class Printer implements USB{
@Override
public void start() {
System.out.println("列印機開啟工作");
}
@Override
public void stop() {
System.out.println("列印機結束工作");
}
}
此為本人學習筆記,若有錯誤,請不吝賜教