2016-11-27 109 views
0

我已经看到了一些实例化新对象的引用,特别是在使用继承时。创建左侧和右侧的类名不同的对象

Cat cat = new Animal(); 

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

我有两个问题。

  1. 这个概念叫什么?
  2. 这怎么可能,你可以用 保持/引用一个与它的原始类别不同的​​类型的对象?

回答

0

这里玩的基本概念是继承。一个很好的开始阅读关于它是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() { sound = "meow"; } 
    } 

    public static void main(String[] args) { 
     Animal animal = new Cat(); 
     System.out.println(animal.getSound()); 
    } 
} 

其结果将是

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

0
  1. 在面向对象的编程世界中,这个概念被称为继承。
  2. 可以将孩子的对象分配给父母的引用。呃,也是技术人员,呃?所以采取这种方式,Cat是一种Animal,但反过来不一定是正确的。 因此,Animal可以是Cat,Dog或其他,因为猫和狗确实具有动物的特性。这也被称为泛化和专业化。 Animal是广义类别,但CatAnimal的专用类别。

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