Java基类引用变量

时间:2015-02-27 16:16:19

标签: java class variables reference base

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

真/假?

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

我认为这方面的一个例子就是我在下面写的代码:

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

class A {

}

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

3 个答案:

答案 0 :(得分:3)

  

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

     

真/假?

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

  

有人能告诉我一个这意味着什么的例子吗?我是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.

答案 1 :(得分:1)

如果您有一个名为Parent

的超类
public class Parent {
    // ...
}

和名为Child

的派生/子类
public class Child extends Parent {
    // ...
}

然后基类引用引用定义为Parent pObj的任何变量(此处名称pObj并不重要),基类对象是指创建为new Parent()的对象,派生类对象是指创建为new Child()的对象。

所以,以下

  

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

指的是像

这样的作业
Parent pObj = new Child();

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

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

答案 2 :(得分:0)

class Base {
}
 
class Derived extends Base {
}
 
class Main {
    public static void main(String[] args)
    {
        Base x = new Base();   // Correct
        Base y = new Derived(); // Correct
        Derived z = new Derived(); // Correct
    }
}

在 Java 中允许将派生类引用分配给基类引用。