当前位置: 首页 > 面试题库 >

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

郭恩
2023-03-14
问题内容

我有2个类,分别称为超类和子类,我试图将子类对象转换为超类,但是当我想使用超类的子类对象时,它似乎不起作用。请帮忙解释。谢谢。这些是代码:

public class superclass
{
    public void displaySuper()
    }
        System.out.println("Display Superclass");
    }
}

public class subclass extends superclass
{
    public void displaySub()
    {  
        System.out.println("Display Subclass");
    }
}


public class Testing
{    
   public static void main(String args[])
   {
      subclass sub = new subclass();
      superclass sup = (superclass) sub;

当我尝试使用子类的displaySub()时出现错误

      sup.displaySub(); //the displaySub method cant found
   }
}

问题答案:

超类不能知道子类方法。

这样考虑:

  • 你有超一流的 Pet

  • 你有两个子类Pet,即:CatDog

  • 两个子类将具有相同的特征,例如 speak

  • Pet超意识到这些,因为所有PetS能说话(即使它不知道此操作的确切机制)
  • Dog但可以做的事情,猫不能,即eatHomework
  • 如果将a强制转换Dog为a Pet,则应用程序的观察者将不会意识到Peta实际上是a Dog(即使我们将其称为实现者)
  • 考虑到这一点,调用eatHomeworkaPet

您可以通过告诉程序您知道sup的类型来解决问题subclass

public class Testing
{    
   public static void main(String args[])
   {
      subclass sub = new subclass();
      superclass sup = (superclass) sub; 
      subclass theSub = (subclass) sup;
      theSub.displaySub();
   }
}

您可以通过执行以下操作来完全解决该问题:

public class superclass
{
    public void display()
    }
        System.out.println("Display Superclass");
    }
}

public class subclass extends superclass
{
    public void display()
    {  
        System.out.println("Display Subclass");
    }
}

public class Testing
{    
   public static void main(String args[])
   {
      subclass sub = new subclass();
      superclass sup = (superclass) sub; 
      sup.display();
   }
}

查看本教程以获取更多信息:覆盖



 类似资料:
  • 我理解超类/子类之间的关系以及强制转换是如何工作的。但是,我的问题是,如果知道中间有一个类,你能把一个超类转换成一个特定的子类吗?例如,如果我有一个动物类对象包含一个BigDog对象,我可以将该对象强制转换为Dog吗?如果BigDog中有Dog中不存在的方法怎么办? 简而言之,你当然可以说超类对象是子类对象,但为什么你可以反转呢? 转念一想, Java在调用方法时检查的是:引用(DOG)是否有引用

  • 问题内容: 我有一些这样的代码。 超级班 子类 所以问题是我可以将超类的对象转换为子类吗?这个问题对我来说是正确的吗? 但它给Class Cast异常。 问题答案: 您可以将子类转换为超级类,反之亦然。如果“车辆”是“超级类”,而“汽车”是子类,则所有“汽车”(子代)都是“汽车”(“超级”),但并非所有“车辆”都是“汽车”。

  • 问题内容: 我从远程REST服务器读取了JSON对象。此JSON对象具有Typescript类的所有属性(通过设计)。如何将收到的JSON对象转换为var类型? 我不想填充一个打字稿变量(即有一个采用此JSON对象的构造函数)。它很大,因此要按子对象和按属性逐个复制所有内容,这将花费大量时间。 问题答案: 您不能简单地将Ajax请求中的原始JavaScript结果转换为原型JavaScript /

  • 我从远程REST服务器读取了一个JSON对象。这个JSON对象具有typescript类的所有属性(按设计)。如何将收到JSON对象转换为类型变量?

  • 问题内容: 可以说我有一个无法更改的库函数,该函数产生了类A的对象,并且我创建了一个继承自A的类B。 使用库函数生成B类对象的最直接方法是什么? 编辑-在评论中要求我提供更多详细信息,所以这里是: PyTables是一个处理python中的分层数据集的程序包。我最常使用的功能是管理部分磁盘数据的能力。它提供了一种“数组”类型,仅随扩展切片一起提供,但我需要选择任意行。Numpy提供了此功能- 您可

  • 例如:Date值为:“dateCollected”:fri Jul 07 00:00:00 IST 1989, 但它只服用星期五而不是整个日期。