java如何隐藏成员变量_Java成员变量的隐藏(实例讲解)

本文详细探讨了Java中子类与父类成员变量的关系。通过实例代码展示了子类不会覆盖父类的成员变量,而是隐藏它们。在访问时,必须通过父类引用才能访问到父类的成员变量。此外,还提到了静态方法的相似情况。文章强调了避免成员变量隐藏以保持代码可读性的最佳实践。
摘要由CSDN通过智能技术生成

一、如果子类与父类中有一个相同名称的成员变量,那么子类的成员变量会不会覆盖父类的成员变量?我们看下在的例子:

public class A {

public int x=10;

}

public class B extends A {

public int x=20;

}

public class C {

public static void main(String[] args) {

A a=new B();

System.out.println(a.x); //1

B b=new B();

System.out.println(b.x); //2

System.out.println(((A)b).x); //3

}

}

运行C类的main方法的结果为:

10

20

10

通过结果我们可以看出子类是不会覆盖父类的成员变量,我们eclipse的调试工具也能很清晰的看出在对像a中同时存在两个x的成员变量(其中一个是父类的),如下图示:

46e05a78b6c2dcd66b50ab484fe60c1f.png

通过第1个和第3个的结果http://www.cppcns.com,可以得出对像对于成员的直接访问是静态邦定的 ,官方解释如下http://www.cppcns.com:

在一个类中,子类中的成员变量如果和父类中的成员变量同名,那么即使他们类型不一样,只要名字一样。父类中的成员变量都会被隐藏。

在子类中,父类的成员变量不能被简单的用引用来访问。而是,必须从父类的引用获得父类被隐藏的成员变量,一般来说,我们不推荐隐藏成员变量,

因为这样会使代码变得难以阅读。

对于静态方法与成员变量类似,如下:

www.cppcns.com

public class A {

public static void print() {

System.out.println("A Static ");

}

}

public class B extends A {

public static void prinrejGbampt() {

System.out.println("B Static ");

}

}

public class C {

public static void main(String[] args) {

A a=new B();

a.print();

B b=new B();

b.print();

((A)b).print();

}

}

结果如下:

A Static

B StarejGbamptic

A Static

以上这篇java成员变量的隐藏(实例讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: Java成员变量的隐藏(实例讲解)

本文地址: http://www.cppcns.com/ruanjian/java/204594.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值