【问题标题】:Creating an object where the class name on the left and right sides are different [duplicate]创建一个左右两侧的类名不同的对象[重复]
【发布时间】:2016-11-27 02:33:10
【问题描述】:

我见过一些实例化新对象的引用如下,尤其是在使用继承时。

Cat cat = new Animal();

但是,我不知道这个概念叫什么。所以,我无法阅读它。

我有两个问题。

  1. 这个概念叫什么?
  2. 这怎么可能,那个,你可以 使用不同于它的类型持有/引用一个对象 原班?

【问题讨论】:

    标签: java oop


    【解决方案1】:
    1. 在面向对象的编程世界中,这个概念被称为继承。
    2. 可以将子对象分配给父对象的引用。呃,太技术了,嗯?所以这么说吧,CatAnimal 的一种,但反过来不一定对。 因此,Animal 可以是 CatDog 或其他任何类型,因为猫和狗确实具有动物的特性。这也称为泛化和专业化。 Animal 是通用类别,而CatAnimals 的特殊类别。

    互联网上有很多可用的资源。看看并了解面向对象的编程范式。祝你好运!

    【讨论】:

      【解决方案2】:

      这里的基本概念是继承。一个开始阅读它的好地方是https://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

      你的例子是相反的——它应该是

      Animal animal = new Cat();
      

      这是因为 Cat 类将是一种特定类型的 Animal — 具有创建 Animal 对象所需的一切,以及一些额外的内容。

      在代码中,这可能类似于:

      public class Test
      {
          public static class Animal
          {
              protected String sound;
              public String getSound() { return sound; }
              public Animal() { sound = ""; }
          }
      
          public static class Cat extends Animal
          {
              public Cat() { super(); sound = "meow"; }
          }
      
          public static void main(String[] args) {
              Animal animal = new Cat();
              System.out.println(animal.getSound());
          }
      }
      

      结果是

      喵喵

      因为 Cat 对象具有来自父 Animal 的 getSound() 方法,但它是使用自己的构造函数创建的并适当地设置数据。

      【讨论】:

        猜你喜欢
        • 2018-07-03
        • 2021-09-03
        • 2013-09-12
        • 1970-01-01
        • 2013-07-31
        • 2021-10-12
        • 1970-01-01
        • 2012-09-10
        • 1970-01-01
        相关资源
        最近更新 更多