Java基类引用变量

可以为基类引用变量分配基类对象或派生类对象的地址。

真假?

谁能告诉我一个这意味着什么的例子? 我是Java的新手,正在尝试理解Java的语言特定术语。 谢谢。

我想这个例子就是我在下面写的代码:

public class B extends A { A a = new A(); A ab = new B(); } class A { } 

我认为既然两个引用变量都是有效的语法(在Eclipse中),那么答案是正确的。

可以为基类引用变量分配基类对象或派生类对象的地址。

真假?

是的,因为所有派生类对象都是基类的实例,而不是相反的方法。

谁能告诉我一个这意味着什么的例子? 我是Java的新手,正在尝试理解Java的语言特定术语。 谢谢。

首先,您需要知道什么是基类和派生类。

基类也称为父类或超类,是由另一个扩展的类。 一个简单的例子是Animal class

虽然子类从其超类扩展而来。 例如, Lion class

我们知道所有的狮子都是动物。 但并非所有动物都是狮子。 子类只是超类的子集。

因此,当我们有一个基类引用时,我们可以将派生类对象分配给它。

例:

 class Animal{ } class Lion extends Animal{ } Animal someAnimal = new Lion(); //because all lions are animals 

然而,反过来却是不真实的。 因此在Java中不可能也不允许:

 Lion lion = new Animal(); //not allowed in Java. 

如果您有一个名为Parent的超类

 public class Parent { // ... } 

和一个名为Child的派生/子类

 public class Child extends Parent { // ... } 

然后基类引用引用任何定义Parent pObj变量(此处名称pObj无关紧要), 基类对象引用创建为new Parent() 对象派生类对象引用创建为new Child() 对象的对象 new Child()

那么,以下

可以为基类引用变量分配基类对象或派生类对象的地址。

指的是像

 Parent pObj = new Child(); 

您可能会问这有什么好处? 这是多态性 。 子类可以重写超类方法以重新定义行为。 这使得pObj引用对同一方法调用的响应方式不同,具体取决于pObj指向Parent()还是Child()对象。

您可能会发现抓住好处有点困难,但请看一下面向对象编程。 多态性inheritance ,你的理解会变得更好。