java - java中类型不匹配?

标签 java subclass superclass

我有以下代码:

public class AClass {
    public AClass() {
        System.out.println("Constructor A");
    }
}

public class BClass extends AClass{
    public BClass(){
        System.out.println("Constructor B");
    }
}

public class Test {
    public static void main(String[] args) {
        BClass b = new BClass();
    }
}

我更改了代码,如下所示:

public class AClass {
    public AClass() {
        System.out.println("Constructor A");
    }
}

public class BClass extends AClass{
    public BClass(){
        System.out.println("Constructor B");
    }
}

public class Test {
    public static void main(String[] args) {
        BClass b = new AClass();
    }
}

在第二个代码片段中,我收到此更改的类型不匹配错误 BClass b = new AClass();

我正在学习java,我想了解错误的更深层含义,我想知道为什么第二个代码片段中出现错误?

最佳答案

说你说;狗是一种动物,例如

class Animal { }
class Dog extends Animal {
    public void bark() { }
}
class Cat extends Animal {
    public void meow() { }
}

Animal a = new Dog(); // is ok.

但你不能说; Animal 是 Dog 的一种。

Dog d = new Animal(); // not ok.
d.bark(); // Animal doesn't have a bark();

关于java - java中类型不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36786843/

相关文章:

Java:为什么我的 toString 方法打印错误信息?

java - 如何测量 Java Web 应用程序中的带宽?

c++ - 从子类实例访问和更改父值

vba - 在Excel VBA中实例化另一个类中的对象

objective-c - 子类化 UIButton 但无法访问我的属性

java - 绕过 super() 构造函数的策略/模式

java - 将 Json 转换为 DTO 数组

java - 我可以在 Hibernate 实体类中使用辅助/方便的方法吗?

java - 如何正确使用getIntExtra?

java - 构造函数不能应用于给定类型,在 Java 中创建对象,面向对象编程