如何创建一个类的对象与java中另一个类的引用变量?

时间:2018-01-02 16:03:16

标签: java oop method-overriding

这很好用

class A 
{
    public void f1(int x) {
        System.out.println("F1 of A");
    }   
}

class B extends A
{
    public void f1(int x) {
        System.out.println("F1 of B");
    }
}

public class Overriding {
    public static void main (String[] args) {
        A obj = new B(); //No Error
        obj.f1(7);
    }
}

但这会产生错误

class A
{
    public void f1(int x) {
        System.out.println("F1 of A");
    }
}

class B extends A
{
    public void f1(int x) {
        System.out.println("F1 of B");
    }
}

public class Overriding {

    public static void main (String[] args) {
        B obj1 = new A(); // error: incompatible types: A cannot be converted to B
        obj1.f1(7);
    }
}

创建一个类的对象并使用java中其他类的引用变量引用它的概念是什么?

2 个答案:

答案 0 :(得分:2)

以这种方式思考:所有起亚灵魂都是汽车,但并非所有汽车都是起亚灵魂。我可以假设起亚灵魂拥有所有汽车共有的所有属性,但我知道汽车一般不具备与起亚灵魂相同的所有属性。

您可以执行类似

的操作
Car car = new KiaSoul();

但你明确地不能做类似

的事情
KiaSoul soul = new Car();

答案 1 :(得分:2)

当您创建一个继承另一个类的字段和方法的新类时,您创建的对象必须是父类的类型。

如果您有一个班级Shape,另一个班级extends,请说Circle

您可以创建Shape类型Circle,但无法创建Circle类型ShapeShape不保证有半径,圆周,直径等功能和字段......

Oracle有一些关于继承的非常有用的教程我建议你阅读:https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html