java - Java中典型的层次继承

标签 java inheritance

考虑下面的代码片段

public class SuperClass {
    public void move()
    {
        System.out.println("i am in super class");
    }
}
public class SubClass1 extends SuperClass{
    public void move()
    {
        System.out.println("i am in sub1 class");
    }

}
public class SubClass2  extends SuperClass {

    public void move()
    {
        System.out.println("i am in sub2 class");
    }

}

现在我正在创建这样的对象。

public class program {
    public static void main(String[] args) {    
            SubClass1 obj = new SubClass2(); // Compile error - Type mismatch: cannot convert from SubClass2 to SubClass1
            obj.move();
    }
}

为什么我不能这样做?是什么阻止我写这篇文章??

最佳答案

Why i can't do like this ?

SubClass2 不是 SubClass1

What stopping me to write this ??

在 Java 中,您实际上无法将类型转换为引用。您只能将引用的类型更改为对象实际的类型。你可能想要的是

SuperClass obj = new SubClass2(); // SubClass2 is a SuperClass 
obj.move();

或者你可以

public class SubClass2  extends SubClass1 {

关于java - Java中典型的层次继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29337759/

相关文章:

class - puppet 节点类包含中继承的公认替代方案吗?

perl - 如何让所有继承的方法返回子类对象?

c# - 在 C# 中传递派生对象的集合

java - hibernate 错误 "unable to locate persister"

java - 关键事件只是有时注册

java - Scala:围绕建议或 Python 装饰器实现 Java 的 AspectJ

java - 如何使用httpunit获取json页面

java - 在线程上调用方法 - 它可以工作,但为什么呢?

java - 我在继承方面做错了什么?

C++构造函数继承无匹配函数