通常情况下,我们在类对象中定义的属性都会设置访问权限,外部程序无法直接获取,防止恶意的修改,当属性被设置为私有属性后,外部程序该如何访问呢?
例:使用普通方法访问私有属性
例:使用property方法访问私有属性
property()方法接收两个参数,第一个参数为获取属性需要调用的实例方法名,第二个参数为设置属性需要调用的实例方法名,返回值就设置为需要设置、获取的属性名。
当执行到实例属性时,就会调用获取实例属性的方法,当执行到实例属性 = xxx时,就会调用设置实例属性的方法。
例:使用@property/@xxxsetter装饰器访问私有属性
1、在类中声明private的变量
2、给出get,set方法
3、在其他类中实例化1中的类,然后通过类的对象来点出成员变量,例如:
public class User{private String name;
public void setName(String name)
{
thisname = name;
}
public String getName()
{
return name;
}
}
public class Test{
public static void main(String[] args)
{
User user = new User();
usersetName("张三");
Systemoutprintln(usergetName());
}
}
package reflection;
import javalangreflectField;
import javalangreflectMethod;
/
该类主要练习使用java的反射机制调用其他类的
private方法和变量;
/
public class MethodTest
{
public static void main(String[] args) throws Exception
{
Class<> classType = Peopleclass;
People p1 =(People) classTypenewInstance();
// 获取指定的方法,调用People类的私有方法;
Method method = classTypegetDeclaredMethod("sayHello",
new Class[] { Stringclass });
methodsetAccessible(true);//压制java的访问修饰符;
methodinvoke(p1, new Object[]{"Mr zhou"});
//获取People类的私有属性;
Field field = classTypegetDeclaredField("age");
fieldsetAccessible(true);
fieldset(p1, 12);
Systemoutprintln(fieldget(p1));
}
}
class People
{
private int age;
private String name;
public int getAge()
{
return age;
}
public void setAge(int age)
{
thisage = age;
}
public String getName()
{
return name;
}
public void setName(String name)
{
thisname = name;
}
private void sayHello(String str)
{
Systemoutprintln("Hello: " + str);
}
}
以上就是关于Python 获取类属性全部的内容,包括:Python 获取类属性、读取private成员变量、java 如何调用一个私有方法里的私有成员变量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)