黑马程序员技术交流社区
标题:
关于private属性
[打印本页]
作者:
孙利川
时间:
2012-4-5 18:36
标题:
关于private属性
class Student
{
private String name;
private int age;
Student(String name,int age)
{
this.name = name;
this.age = age;
}
int compareTo_1(Student s)
{
return this.age-s.age;
//age不是私有字段吗,为什么s的age字段能在这里直接访问呀,私有字段不是只能在类内部进行访问吗,比如在getAge()方法中可以访问。
}
String getName()
{
return name;
}
int getAge()
{
return age;
}
public static void main(String[] args)
{
Student s1 = new Student("zhangsan",19);
Student s2 = new Student("lisi",21);
System.out.println(s1.compareTo_1(s2));
}
}
作者:
yangshang1
时间:
2012-4-5 18:50
private 自己类中或自己的对象
public 所有的类中
default 在同一个包中
protected 在子类中其他类不可使用了
作者:
宋蕈
时间:
2012-4-5 19:22
你的两个age始终都是属于在类中使用,只是两个对象不一样而已。
作者:
江远云
时间:
2012-4-5 19:42
//age不是私有字段吗,为什么s的age字段能在这里直接访问呀,私有字段不是只能在类内部进行访问吗,比如在getAge()方法中可以访问。
s的age是形式参数是个变量,age在Student类中的形式参数,所以可以访问自己类中被private修饰的age。这个方法是本类内部的。
作者:
邓斌
时间:
2012-4-5 20:02
楼主代码复制后有错误。改后输出19
class Student
{
private String name;
private int age;
Student(String name,int age)
{
this.name = name;
this.age = age;
}
int compareTo_1(Student s)
{
return this.age=age;
}//age不是私有字段吗,为什么s的age字段能在这里直接访问呀,私有字段不是只能在类内部进行访问吗,比如在getAge()方法中可以访问。 }
String getName()
{
return name;
}
int getAge()
{
return age;
}
public static void main(String[] args)
{
Student s1 = new Student("zhangsan",19);
Student s2 = new Student("lisi",21);
System.out.println(s1.compareTo_1(s2));
}
}
本代码中就一个类。。private似有可以在本类中使用。无疑问。在其他类中使用private修饰的属性。可在private类中创建方法。输出。在外部类中创建对象。调用private方法。
作者:
邓斌
时间:
2012-4-5 20:05
输出21
class Student
{
private String name;
private int age;
Student(String name,int age)
{
this.name = name;
this.age = age;
}
int compareTo_1(Student s)
{
return this.age=s.age;
//加s.
}//age不是私有字段吗,为什么s的age字段能在这里直接访问呀,私有字段不是只能在类内部进行访问吗,比如在getAge()方法中可以访问。 }
String getName()
{
return name;
}
int getAge()
{
return age;
}
public static void main(String[] args)
{
Student s1 = new Student("zhangsan",19);
Student s2 = new Student("lisi",21);
System.out.println(s1.compareTo_1(s2));
}
}
作者:
郑苑东
时间:
2012-4-5 20:15
本帖最后由 郑苑东 于 2012-4-5 20:17 编辑
s同样是在Student的一个对象。你的int compareTo_1(Student s)方法是在Student类中所以可以。。自己的自己类中用自己的两个对象。判断对象里面的内容。。。在自己的类中即使是私有的也可以同过 对象.age来调用。。。
作者:
孙国军
时间:
2012-4-5 20:29
return this.age-s.age; //age不是私有字段吗,为什么s的age字段能在这里直接访问呀,私有字段不是只能在类内部进行访问吗,比如在getAge()方法中可以访问。 }
你的age本来就在一个类中啊
作者:
薛飞飞
时间:
2012-4-5 22:04
return this.age-s.age;--------------->你的
this
和
s
都是代表Student这个类...因此它们自然能通过
类名.
的方式调用它们的属性
作者:
niceBoy
时间:
2012-4-5 23:10
private是只能在类内部进行访问
s是Student类的对象引用,age不就在Student类中呀!自己的东西自己当然能用
作者:
刘_浩
时间:
2012-4-6 11:39
本帖最后由 liuhao411 于 2012-4-6 11:40 编辑
哥们,你的写的这段程序只有一个类,那就是student{}
class A{private int age;}
class B{这里面才不能直接访问A类中的age}
现在相信你明白了。多理解一下类,对象就是靠它在起作用的。
作者:
王永旺
时间:
2012-4-6 12:02
事情是这个样子滴
class Student
{
private String name;
private int age;
Student(String name,int age)
{
this.name = name;
this.age = age;
}
int compareTo_1(Student s)
{
return this.age-s.age; //
Student是一个类,只要还没有出下面的大括号就还是类Student的地盘,所以是age是可以使用的
}
权限问题可以看下面的表
123.jpg
(17.58 KB, 下载次数: 53)
下载附件
2012-4-6 12:00 上传
作者:
黑马-王言龙
时间:
2012-4-6 12:21
private的访问权限是自己的类。你定义的compareTo_1(Student s)方法是自己类中的方法。当调用时,传给它的是Student对象,这个对象的所有属性方法都是同类可以访问的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2