2016 - 2024

感恩一路有你

内部类为什么可以引用外部类 为什么java需要getter/setter来获取私有属性?

浏览量:2452 时间:2021-03-23 17:04:54 作者:admin

为什么java需要getter/setter来获取私有属性?

题主好,我来回答这个问题。

首先,通过g/s来获取私有属性的值,是javaBean规范中的一条,主要是为了把对象私有的那点小秘密藏起来,避免被坏人看到

举例说明,张三是一个对象,张三的钱包是他的一个属性,当然张三为了安全起见,会把钱包藏起来,只有自己能看到,也就是说,钱包是private的。张三还有个坑爹儿子:小三子。因为有了小三子,张三就需要提供一个供小三子领生活费的方法,而不是直接把钱包暴露给小三子。因为,直接暴露给小三子的话,会有以下几个问题:

1、张三控制不住小三子拿钱,万一拿去买了游戏皮肤就不好了;

2、张三有多少钱,都可以被小三子看到,但是很多时候,张三是不希望被小三子看到的(例如私房钱);

3、小三子长大以后给张三生活费,给了多少张三也不知道,就好像得了老年痴呆一样。

总之,通过方法来操作属性的根本目的就是为了保护自己的私有属性,不被外部直接访问。

java里一个私有的属性如何在其他类里面进行访问?

非私有方法间接访问

既然是私有属性就不建议直接访问的,一般会提供方法来访问私有属性,这样可以在方法中对属性的访问做一些控制。

反射直接访问

当然也可以通过反射来直接访问。

我们准备一个包含私有属性的类

然后通过反射来访问属性,记得一定要加aField.setAccessible(true)这句代码,不然就不能访问私有属性。

不加aField.setAccessible(true)


加了aField.setAccessible(true)

java如何证明私有属性不能被继承?

谢谢邀请回答。

public class A{

private int a

public int getAa(){return a}

}

public class B extends A{

public int getBa(){

return a //在这里编译会报错,因为私有的属性继承不到B来

}

public int getBa() {

return getAa()

}

}

其实这里说得无法继承只是B无法访问而已。属性本身还是在B的对象里面的的。比如用getBa还是可以可以通过继承来的A的公共方法getAa()把a取出来。

内部类为什么可以引用外部类 java如何输出私有的类 类的私有成员可以被谁访问

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。