如何将子类称为超类类型

巴拉帕普皮

我目前正在学习继承,但在理解该概念时遇到了一些麻烦。对于以下代码,有人可以告诉我为什么我不能声明超类类型的子类吗?

public class Test{
    public static void main(String[] args){
    Superclass myA = new Superclass();
    Superclass myB = new Subclass();
    }
public class Superclass{
    private string a;

    public Superclass()
    {
        a="";
    }
    public void setA(String userA)
    {
        a = userA;     
    }
}
public class Subclass extends Superclass{
    private String b;

    public Subclass()
    {
        b = "";
    }
    public void setB(String userB)
    {
        b = userB;
    }
    public void display()
    {
        System.out.print(b)
    }
}

myA不会给我任何问题,但是myB可以。我想做一个让我们说超类的数组,但是我想能够使用Subclass。

Superclass[] X = new Superclass[2];
x[0] = new Subclass();
X[0].setB("hello");
X[0].display();
哈里什·纳拉扬

您正在将子类对象分配给超类类型变量(即,完成了转换),这很好。但是当您这样做时,只能访问超类方法。因此,为了访问子类方法,请向下转换到其子类类型。例如。

    Superclass[] X = new Superclass[2];
    X[0] = new Subclass();
    ((Subclass) X[0]).setB("hello");
    ((Subclass) X[0]).display();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

这段代码如何将子类对象分配给超类类型?

如何将子类对象转换为超类对象

您如何将超类型列表转换为子类型列表?

如何将ES6默认参数从子类传递到其超类?

如何将原型属性从javascript中的超类委托给子类

如何将超类对象值复制到子类对象值?

如何将装饰器应用于子类中的超类方法?

如何将超类对象传递给子类构造函数?

如何将子类作为需要超类的方法的参数传递?

将子类实例化为超类类型有什么优势?

如何从超类方法而不是超类类型返回子类型

斯威夫特:如何让具有子类返回类型的函数符合将超类定义为返回类型的协议?

如何将返回类型注释为类实例或其(唯一)子类实例?

如何将类型抽象类的变量强制转换为其子类?

被称为超类方法,即使对象的子类

尝试将超类对象添加到列表时如何克服列表子类型推断问题?

如何将父类型转换为子类型

超类类型对象的子类的构造方法?

返回子类作为超类的类型

对子类实例使用超类类型

将通用子类型类信息传递给Java中的超类

如何使超类查询集返回子类对象?还是将超类查询集向下转换为子类列表?

Kotlin类型,子类型和超类型与类,子类和超类

如何从 Python 中现有的超类类型对象实例化子类类型变量

如果我有超类类型的集合,如何获得特定子类类型的所有项?

无法将超类转换为子类

将超类的对象转换为子类

杰克逊多态性:如何将多个子类型映射到同一类

是否可以将指向子类的指针分配给具有超类类型的varibale?