Python中一个类主要由静态特征和动态特征构成。
静态特征的标准称呼为:字段(实例、类)
动态特征的标准称呼为:方法(实例方法、类方法、静态方法)
对于某些字段,如果在其它类中可以对其直接访问和修改,会对其程序带来很大的隐患。为了保护某些字段不能随便更改,我们将其设置为私有字段,只有在类中才可以访问。
定义私有字段时,在变量名前加上两个下划线 __变量名 。
为了读取私有字段我们可以定义字段同名方法,并添加装饰器 @property ,这样在外部类中可以像类的普通字段一样读取。
为了修改私有字段我们可以定义字段的同名方法,传入参数为待修改的值。装饰器为 @方法名setter
私有属性是不能继承的,只能在类的内部调用。子类是无法调用父类的私有属性的。·
首先使用GET SET访问数据是JAVA BEAN的基本规范
虽然在这个事例里面没有区别,但是对外部来讲,只知道你的GET方法返回了一个LIST接口对象,但是没有暴露类内部存在一个LIST对象的信息,
外部并不知道你这个LIST对象是类的私有属性还是 你重新NEW的,又或是你在返回这个LIST时候做了什么 *** 作,
GET的意义在于隐藏类内部的实现细节,只给外部访问统一的接口,同时,如果你类的内部实现变了,比如从一个LIST属性转变成了用COLLECTION或MAP做内部属性再转换成LIST返回数据,只要保留了GET方法对外部是没有任何影响的
软件提供者应该有一个概念,就是一旦一个方法或者变量或者类使用了PUBLIC修饰符那就代表一种承诺,一但你做出了这个承诺就不能再随意修改,因为你的客户很可能使用了这些变量或接口如果直接公开变量那么对你自己来讲这个类的扩展和修改余地就很小了
面向对象的三大特征之一封装,private了某个成员那么就必须对外创建一个对外访问接口,setXX()和getXX,否则本类中都没有办法访问。既
然对外创建了访问接口,那么某个类继承了它之后肯定自身也具备了该属性或者方法,所以肯定继承了。换言之,父类的属性和方法都是从子类身上抽取的,如果子
类继承了父类都没法具备父类的功能的话,继承就毫无意义了。
或者有可能是这样的:父类中的属性和方法不能私有。因为我确实没印像看到过父类中的成员是私有的。
public static void main(String[] args) {
try {
Test t = TestclassnewInstance();//通过class获得一个对象
Field f = TestclassgetField("fname");//拿到字段对象
fsetAccessible(true);//设置为可以访问,不设置的话,下一步访问会失败
fset(t, "value");//并进行赋值
Systemoutprint(tgetFname());
} catch (Exception e) {
eprintStackTrace();
}
}
static class Test {
private String fname;
public String getFname() {
return fname;
}
}
通过java的反射原理
以上就是关于Python中的私有属性全部的内容,包括:Python中的私有属性、java geter方法是否该直接返回私有属性、java中怎么调用父类中私有的属性等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)