有兩個(gè)源文件
// 接口默認(rèn)就是抽象的昧诱。當(dāng)需要聲明一個(gè)接口的時(shí)候不需要使用 abstract 關(guān)鍵字。
// interface 關(guān)鍵字用來(lái)聲明一個(gè)接口
/*
1.一個(gè)接口可以繼承另一個(gè)接口耍休,和一個(gè)類繼承自另一個(gè)類的方法相同叛赚。
extends 關(guān)鍵字用來(lái)繼承一個(gè)接口驻仅,并且子接口要繼承父接口的所有方法其徙。
2.一個(gè)接口可以繼承多個(gè)接口,以逗號(hào)隔開(kāi)
*/
interface Animal extends LivingThing{
// 接口不能包含實(shí)例變量唯灵。接口中唯一能出現(xiàn)的變量必須被同時(shí)聲明為 static 和 final 。
//int legs 常量必須賦值薯定,沒(méi)有默認(rèn)值;
public static final int legs = 4;
/*
接口中的每個(gè)方法默認(rèn)也是抽象的始绍,所以 abstract 關(guān)鍵字也不需要。
接口中的方法默認(rèn)是 public 的沉唠。
*/
public void eat();
void travel();
// 接口不能包含構(gòu)造方法疆虚。 接口中的所有方法都是抽象的苛败。
// Animal();
}
interface LivingThing {
void live();
// 接口不能包含構(gòu)造方法满葛。 接口中的所有方法都是抽象的。
// void Animal();
}
interface Bird {
void fly();
// 接口不能包含構(gòu)造方法罢屈。 接口中的所有方法都是抽象的嘀韧。
// void Animal();
}
// 接口不能被類繼承;它應(yīng)該被類實(shí)現(xiàn)缠捌。
public class MammalInt implements Animal,Bird{
public void eat(){
System.out.println("Mammal eats");
}
public void travel(){
System.out.println("Mammal travels");
}
public int noOfLegs(){
return 0;
}
public void fly(){
System.out.println("Mammal can't fly");
}
public void live(){
System.out.println("Mammal is alive");
}
public static void main(String args[]){
MammalInt m = new MammalInt();
m.eat();
// m.travel();
m.fly();
// 接口方法必須實(shí)例化 但是不是必須調(diào)用
m.live();
// 不能實(shí)例化一個(gè)接口锄贷。
// Animal a = new Animal();
}
/*1.當(dāng)一個(gè)類實(shí)現(xiàn)一個(gè)接口的時(shí)候,你可以認(rèn)為類就是簽訂一個(gè)條約曼月,
同意去執(zhí)行接口中的各種行為谊却。
2.如果一個(gè)類沒(méi)有實(shí)現(xiàn)接口中的所有行為,
這個(gè)類就必須聲明為 abstract */
abstract class dog implements Animal{
/*
1.類可以一次性實(shí)現(xiàn)多個(gè)接口哑芹。
2.類只可以繼承一個(gè)父類炎辨,但是可以實(shí)現(xiàn)多個(gè)接口。
3.一個(gè)接口可以繼承自另一個(gè)接口聪姿,和一個(gè)類繼承自另一個(gè)類的方法相同碴萧。
4.實(shí)現(xiàn)接口中的方法 注意類的權(quán)限
*/
public void travel(){
System.out.println("i like travel");
}
}
}