『壹』 抽象類的對象可以調用抽象方法嗎,該怎麼解決
當然可以,在它被實例化之後,它的抽象方法自然已經被實現過了。
就是說,比如,Fruit類有個方法叫eat,都是抽象的
那麼Fruit f = new Banana();
f.eat();
調用的時候,因為已經存在了香蕉(Banana)類,且該類可以被實例化,說明該類里的eat方法已經被實例化過了。
『貳』 java類可以調用抽象類的抽象方法嗎
抽象類方法的實現是在對應的子類中,抽象類(父類)對象指向子類即可調用,即new 子類而不是本身,這是多態的體現:父類只有函數頭聲明,而子類通過重寫(「覆蓋」)完成具體的實現
如public abstract Animal{
void show();
}
public Cat extends Animal{
@override
void show(){
syso ("我是子類cat!");
}
}
main(){
//父類引用指向子類
Animal a=new Cat();
a.show ();
}
}
運行結果:
我是子類cat!
『叄』 子類調用 抽象類里的普通方法
抽象類不能被實例化,想調用裡面的普通方法要通過繼承,然後實例化子類調用抽象類的普通方法,下面有一段示例代碼供你參考
定義一個抽象類 A
public abstract class A {
abstract int getSum(int a,int b);//抽象方法
int getSum2(int b)
{
int b;
return b;
};//普通方法
}
定義B類繼承A類
public class B extends A {
int getSum(int a,int b) { //必須實現父類中的抽象方法的具體細節
int sum=a+b;
return sum;
}
public static void main(String a[]){ //主方法
System.out.println(new B().getSum2(90));//調用普通方法
System.out.println(new B().getSum(2,6));//調用抽象方法也相同
}
}
代碼你不要復制,因為標點有中文狀態下的可能會報錯
希望能解決你的疑問,不過抽象類還有一個特例「介面」,介面要通過implements 關鍵字實現