Java的父类和子类中是否可以具有相同的数据成员?

问题是“在Java的父/基和子/派生类中我们可以有相同的数据成员”吗?

  • 是的,在Parent和Child类中可以有相同的数据成员。

  • 现在,我们将看到父级和子级的能力或实力。父类引用可以保留自己的对象,子类对象也可以保留,而子类引用只能保留自己的对象。

  • 父类对象只能访问其数据,这意味着该类无权访问子类数据。

  • 借助示例,我们将看到如果在[Parent和Child]类中包含相同的数据成员,将会发生什么情况。

示例

class Base {

    // 声明和实例化数据成员  

    String str = "We are in Parent class";

}

class Derived extends Base {

    // 声明和实例化数据成员  

    String str = "We are in Child class";

}

class Main {

    public static void main(String[] args) {

        //创建一个基类对象

        Base base = new Base();

        //使用基类对象调用基类数据成员。

        System.out.println("Base class reference can access only base class member :" + " " + base.str);

        //创建一个派生类对象

        Derived derived = new Derived();

        //用派生类对象调用派生类数据成员。

        System.out.println("Derived class reference can access both Base and Derived class member : " + " " + derived.str);

        //这里的基类引用持有一个对象

        //派生类,它是完全有效的

        base = new Derived();

        //基类引用只能访问基类 

        //数据成员是否持有对象是 

        //基类或派生类。

        System.out.println("Base class reference holding an object of Derived class but it can access only Base class data member :" + " " + base.str);

        //我们不需要包含以下代码...。

        /*

        //在这里,派生类引用持有一个对象

        //基类,它完全无效

        derived = new Base();

        //的对象 

        //类,那么我们将得到编译时错误

        System.out.println("We will get compile time error");

        */

    }

}

输出结果

E:\Programs>javac Main.java

E:\Programs>java Main

Base class reference can access only base class member : We are in Parent class

Derived class reference can access both Base and Derived class member:  We are in Child class

Base class reference holding an object of Derived class but it can access only Base class data member: We are in Parent class

在以上程序中,我们有四种情况:

  1. 如果基类引用包含基类的对象,则它是完全有效的,并且我们只能访问基类数据成员。

    Base base = new Base();
  2. 如果“派生类”引用持有“派生类”的对象,则它是完全有效的,我们可以访问“基类”和“派生类”数据成员。

    Derived derived = new Derived();
  3. 如果基类引用包含派生类的对象,则它也是完全有效的,但它只能访问基类数据成员。

    Base base = new Derived();
  4. 如果派生类引用包含基类的对象,则它完全无效,在这种情况下,我们将获得编译时错误。

    Derived derived = new Derived();

以上是 Java的父类和子类中是否可以具有相同的数据成员? 的全部内容, 来源链接: utcz.com/z/316016.html

回到顶部