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.javaE:\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
在以上程序中,我们有四种情况:
如果基类引用包含基类的对象,则它是完全有效的,并且我们只能访问基类数据成员。
Base base = new Base();
如果“派生类”引用持有“派生类”的对象,则它是完全有效的,我们可以访问“基类”和“派生类”数据成员。
Derived derived = new Derived();
如果基类引用包含派生类的对象,则它也是完全有效的,但它只能访问基类数据成员。
Base base = new Derived();
如果派生类引用包含基类的对象,则它完全无效,在这种情况下,我们将获得编译时错误。
Derived derived = new Derived();
以上是 Java的父类和子类中是否可以具有相同的数据成员? 的全部内容, 来源链接: utcz.com/z/316016.html