java - 如果方法是抽象的,是否需要向下转换?

标签 java inheritance compiler-errors polymorphism downcast

这是一个例子:

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()对象?

最佳答案

Will I have to downcast Sol to a Sphere object in order to use the volume() method?



不可以,因为在这里声明了Solid方法,所以volume()引用可以正常工作。

关于java - 如果方法是抽象的,是否需要向下转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23205997/

相关文章:

android - Android 工具位置的最佳实践是什么?

Java、继承和实例方法。为什么我的方法不能继承?

java - 当使用组合而不是继承时,Comparator<T> 的替代方案是什么?

mysql - 几乎没有 JOIN 的 SQL

java - Spring MVC 和 JSR-303 hibernate 条件验证

java - 无法使用tomcat服务器在linux上安装新的遗物

c++ - 为什么 “std::isdigit”在Windows上的C++中报告 “no matching overloaded function”

java - Java错误: Cannot find symbol (acm)

java - 将两个 JPanel 添加到 JLayeredPane

c++ - 这种编译时确定继承的模式有名字吗?