以下是一个例子:
public abstract class Solid{
//code...//
public abstract double volume();
}
这是一个扩展Solid
的类public class Sphere extends Solid{
//code...//
public double volume(){
//implementation//
}
}
现在,如果我想做这样的事情,我是否需要垂头丧气?
public class SolidMain{
public static void main(String[] args){
Solid sol = new Sphere(//correct parameters...//);
System.out.println(sol.volume());
}
我知道编译器无法找到正确的方法时会发生编译时错误。由于对象Sol
属于Solid
类型,只有abstract volume();
方法,编译器会导致错误吗?我是否必须将Sol
转发给Sphere
对象才能使用volume()
方法?
答案 0 :(得分:0)
我是否必须将Sol向下转换为Sphere对象才能使用volume()方法?
不,Solid
引用可以正常工作,因为在那里声明了volume()
方法。
答案 1 :(得分:0)
System.out.println(sol.volume());
调用Sphere的volume(),sol只是一个对象的引用变量(在这种情况下是Sphere),你不需要将它强制转换。