‘壹’ 抽象类的对象可以调用抽象方法吗,该怎么解决
当然可以,在它被实例化之后,它的抽象方法自然已经被实现过了。
就是说,比如,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 关键字实现