1,面向對象(接口的概述及其特點)
- A:接口概述
- 從狹義的角度講就是指java中的interface
- 從廣義的角度講對外提供規則的都是接口
- B:接口特點
- a:接口用關鍵字interface表示
- interface 接口名 {}
- b:類實現接口用implements表示
- class 類名 implements 接口名 {}
- c:接口不能實例化
- 那么,接口如何實例化呢?
- 按照多態的方式來實例化。
- d:接口的子類
- a:可以是抽象類。但是意義不大。
- b:可以是具體類。要重寫接口中的所有抽象方法。(推薦方案)
- a:接口用關鍵字interface表示
2,面向對象(接口的成員特點)
- A:接口成員特點
- 成員變量;只能是常量,并且是靜態的并公共的。
* 默認修飾符:public static final
* 建議:自己手動給出。 - 構造方法:接口沒有構造方法。
- 成員方法:只能是抽象方法。
* 默認修飾符:public abstract
* 建議:自己手動給出。
- 成員變量;只能是常量,并且是靜態的并公共的。
public class Demo2_Interface {public static void main(String[] args) {Demo d = new Demo();d.print();System.out.println(Inter.num);}}interface Inter{public static final int num = 10 ;//public Inter(){} 接口中沒有構造方法/*public void print(){ 接口中不能定義非抽象方法}*/public abstract void print();}class Demo/* extends Object*/ implements Inter{ //一個類不寫繼承任何類,默認繼承Object類public void print(){System.out.println(num);}public Demo(){super();}}
3,面向對象(類與類,類與接口,接口與接口的關系)
- A:類與類,類與接口,接口與接口的關系
- a:類與類:
- 繼承關系,只能單繼承,可以多層繼承。
- b:類與接口:
- 實現關系,可以單實現,也可以多實現。
- 并且還可以在繼承一個類的同時實現多個接口。
- c:接口與接口:
- 繼承關系,可以單繼承,也可以多繼承。
- a:類與類:
public class Demo3_Interface {public static void main(String[] args) {// TODO Auto-generated method stub}}
interface InterA{public abstract void printA();
}
interface InterB{public abstract void printB();
}
interface InterC extends InterA,InterB{}
class Demo extends Object implements InterA,InterB{public void printA(){System.out.println("printA");}public void printB(){System.out.println("printB");}
}
面向對象(抽象類和接口的區別)
A:成員區別
- 抽象類:
- 成員變量:可以變量,也可以常量
- 構造方法:有
- 成員方法:可以抽象,也可以非抽象
- 接口:
- 成員變量:只可以常量
- 成員方法:只可以抽象
- 抽象類:
B:關系區別
- 類與類
- 繼承,單繼承
- 類與接口
- 實現,單實現,多實現
- 接口與接口
- 繼承,單繼承,多繼承
- 類與類
C:設計理念區別
- 抽象類 被繼承體現的是:”is a”的關系。抽象類中定義的是該繼承體系的共性功能。
- 接口 被實現體現的是:”like a”的關系。接口中定義的是該繼承體系的擴展功能。
A:案例演示
- 動物類:姓名,年齡,吃飯,睡覺。
- 貓和狗
- 動物培訓接口:跳高
package owsdawdcx;public class Test_Animal {public static void main(String[] args) {Cat c = new Cat ("加菲",8);c.eat();c.sleep();JumpCat jc = new JumpCat("跳高貓",3);jc.eat();jc.sleep();jc.jump();}}
abstract class Animal{//動物類private String name;private int age;public Animal(){}public Animal(String name,int age){this.name = name;this.age = age;}public void setName(String name){this.name = name;}public String getName (){return name;}public void setAge(int age){this.age = age;}public int getAge(){return age;}public abstract void eat();public abstract void sleep();}
interface Jumping {public void jump();
}class Cat extends Animal{public Cat(){}public Cat(String name,int age){super(name,age);}public void eat(){System.out.println("貓吃魚");}public void sleep(){System.out.println("側著睡");}
}class JumpCat extends Cat implements Jumping{public JumpCat (){} //空參構造public JumpCat(String name,int age){ //有參構造super(name,age);}public void jump(){System.out.print("貓跳高");}
}