① java里實現一個介面的類必須要實現介面里的所有方法嗎
一、實現介面或繼承抽象類的非抽象子類必須實現介面的所有方法或抽象類的所有抽象方法。
介面中的所有方法均為抽象方法,抽象類中包含非抽象方法和抽象方法。如果一個非抽象子類實現了介面,那麼該子類必須實現父介面的所有方法。如果一個非抽象子類繼承了抽象類,那麼該子類必須實現抽象類的所有抽象方法。
二、實現方案
(一)實現介面
1. 定義介面
/**
*介面:表示人類行為
*/
interfaceBehavor{
/**
*抽象方法:「吃飯」方法
*/
voideat();
/**
*抽象方法:「睡覺」方法
*/
voidsleep();
}
2. 定義子類,實現介面
/**
*子類:表示人類,實現「行為」介面
*/
classPersonimplementsBehavor{
/**
*姓名
*/
protectedStringname=null;
publicPerson(Stringname){
this.name=name;
}
//實現介面的抽象方法
@Override
publicvoideat(){
System.out.println(name+"正在吃飯......");
}
//實現介面的抽象方法
@Override
publicvoidsleep(){
System.out.println(name+"正在睡覺......");
}
}
3. 定義調用類,調用方法
publicclassMain{
publicstaticvoidmain(String[]args){
Personp=newPerson("張三其");
p.eat();
p.sleep();
}
}
(二)繼承抽象類
1. 定義抽象類
/**
*抽象類:表示人類
*/
abstractclassPerson{
/**
*姓名
*/
protectedStringname=null;
publicPerson(Stringname){
this.name=name;
}
/**
*抽象方法:吃飯
*/
publicabstractvoideat();
/**
*抽象方法:睡覺
*/
publicabstractvoidsleep();
}
2. 定義子類,繼承抽象類
/**
*子類:學生類
*/
classStudentextendsPerson{
publicStudent(Stringname){
super(name);
}
//實現抽象類的抽象方法
@Override
publicvoideat(){
System.out.println("學生"+name+"正在吃飯......");
}
//實現抽象類的抽象方法
@Override
publicvoidsleep(){
System.out.println("學生"+name+"正在吃飯......");
}
}
3. 定義調用類,調用方法
publicclassMain{
publicstaticvoidmain(String[]args){
Personp=newStudent("張三其");
p.eat();
p.sleep();
}
}
② java介面中必須都是抽象方法嗎,我定義非抽象方法同樣可以使用
介面中所有方法都是抽象方法;無論你加不加abstract,所有實現指定介面的類都必須重寫並實現該介面的所有方法,否則這個類就是抽象類。
③ java 中,介面中所有方法均為抽象方法,這句話是對的嗎
首先明確概念問題,一個類如果是抽象的那麼就應該稱之為介面interface
介面裡面的方法全部是抽象的,也就是方法後面不會出現{};
同時,你在使用的時候去實現這個介面implements
把方法完善了;
在你的父類介面里定義下面這個方法
string
getstring();裡面可以放參數,
再搞一個類implements
這個介面,同時把這個方法實現了
string
getstring(){
.......
return
null;
};
④ 如果JAVA中一個類繼承的兩個介面中有相同方法,怎麼辦
沒法辦到……因為介面沒有具體邏輯,你怎麼實現的就會怎麼返回。不論調用的時候是screen類型還是host類型,最後具體的實現都是computer的getSize方法。建議分開實現,因為computer和screen、host不是一個繼承關系,而是一個組成關系