创建左侧和右侧的类名不同的对象
问题描述:
我已经看到了一些实例化新对象的引用,特别是在使用继承时。创建左侧和右侧的类名不同的对象
Cat cat = new Animal();
但是,我不知道这个概念被称为什么。所以,我无法阅读它。
我有两个问题。
- 这个概念叫什么?
- 这怎么可能,你可以用 保持/引用一个与它的原始类别不同的类型的对象?
答
这里玩的基本概念是继承。一个很好的开始阅读关于它是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()
方法,但是使用它自己的构造函数创建并适当地设置了数据。
答
- 在面向对象的编程世界中,这个概念被称为继承。
- 可以将孩子的对象分配给父母的引用。呃,也是技术人员,呃?所以采取这种方式,
Cat
是一种Animal
,但反过来不一定是正确的。 因此,Animal
可以是Cat
,Dog
或其他,因为猫和狗确实具有动物的特性。这也被称为泛化和专业化。Animal
是广义类别,但Cat
是Animal
的专用类别。
互联网上有很多可用的资源。查看并了解面向对象编程范例。祝你好运!