黑马程序员技术交流社区
标题:
权限问题,private get set
[打印本页]
作者:
高正新
时间:
2012-10-9 11:39
标题:
权限问题,private get set
本帖最后由 水木桶 于 2012-10-9 17:11 编辑
public class Person {
private String name;
//get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void kill(Person p){
System.out.println(this.name + "和 "+ p.getName());//此处的p.getName()为什么写成p.name一样可以运行?
}
}
复制代码
public class Pkillp {
/**
* @param args
*/
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
p1.setName("小明");
p2.setName("小王");
p1.kill(p2);
}
}
复制代码
问题如文中注释的那块
System.out.println(this.name + "和 "+ p.getName());//此处的p.getName()为什么写成p.name一样可以运行?
复制代码
作者:
葬天
时间:
2012-10-9 11:46
类内部可以使用任何权限的成员变量,
访问限定符 所限定的是 包,继承关系
作者:
唐增友
时间:
2012-10-9 11:49
本帖最后由 唐增友 于 2012-10-9 11:52 编辑
好像可以,楼上正解
作者:
李兆宁
时间:
2012-10-9 11:51
那是在类内部定义的方法,可以调用私有属性
如果是第二块代码的,10,11两行改了就不行了,只能通过get set方法获取设置属性。不能直接使用了
作者:
qhasilver
时间:
2012-10-9 11:56
private 访问权限是对外部类做限制,内部方法当然可以调用全局变量里的属性值。
作者:
刘伟平
时间:
2012-10-9 12:12
在Person类中,定义的private name 变量的访问范围就是整个Person类,kill方法的形参为Person p,里面的this.name实际就是p.name,this指的就是Person p所指向的对象。
作者:
王震阳老师
时间:
2012-10-9 12:53
因为private的访问权限为该类内部。因此上面可以直接访问。
作者:
高正新
时间:
2012-10-9 14:44
new Person(); new 出来的两个对象 p1、p2.
p1.kill(p2)这句话调用
public void kill(Person p){
System.out.println(this.name + "和 "+ p.getName());
}
这个方法,p.getName()得到的是p2的name。
但是p2的name已经被私有化了,为什么还可以通过p.name得到它的name?
就是不明白,难到同一个Person() 创建的 p1 p2 两个对象之间可以互相直接访问私有化成员?
作者:
胡斌
时间:
2012-10-9 16:22
因为你的方法是公有的,并且和你的成员变量在同一个类中。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2