为什么属性设置成了private,但是给属性赋值不需要通过set() get()~

classPerson2{privateStringname;privateintage;publicPerson2(Stringn,inta){this.name=n;... class Person2{
private String name;
private int age;
public Person2(String n,int a){
this.name = n;
this.age = a;
}

public String getInfo(){
return "姓名:"+name+",年龄:"+age;
}
}

class Student extends Person2{
private String school;
public Student(String n,int a,String s){
this(n,a);
school = s;
}
public Student(String n,int a){
super(n,a);
}
public String getInfo(){
return super.getInfo()+",学校:"+school;
}
}

public class ExtDemo{
public static void main(String args[]){
Student s = new Student("AA",10,"BB");
System.out.println(s.getInfo());
}
}
不加上set()get()一样运行成功~~不是说如果属性被设置成私有,就一定要通过set和get来设置,获取属性吗?
展开
 我来答
百度网友2b93039
2014-02-24 · TA获得超过209个赞
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:121万
展开全部
Student s = new Student("AA",10,"BB");

这句调用了student类的构造方法

public Student(String n,int a,String s){
this(n,a);
school = s;
}
this(n,a);调用了父类的构造方法

使用构造方法赋值是不需要setter方法的。
更多追问追答
追问

使用构造方法赋值是不需要setter方法的  如果是这样我就明白了~能肯定是这样的吗 ?因为之前书上看了用SETTER GETTER方法赋值的例子但是程序中依然有用到构造方法~

追答
这么说吧
private 私有 是对于其他类来说 但是对于本身的类是可以直接调用和赋值的。你的构造方法是写在本类中,可以直接赋值。其他类调用的是公有的构造方法。 只要是在本类中声明的方法,都可以直接给本类中的私有变量赋值。

本类就是指私有变量所在的类

更说明白点举个例子 就相当于 你的手机是你私有的,我问你借用一下。

这里面手机就是私有变量
你就是方法,我不可以直接用你手机,但是可以通过问你借来使用

我呢 就是调用方法。 问你借 ,你来给我权限

差不多就是这个意思
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Seraph_fd
2014-02-24 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:61
采纳率:50%
帮助的人:56.6万
展开全部
这不是你写的 get 么?public String getInfo(){

难道你是在说 school 属性?
get set 是给外部的人调用的。
自己的东西自己当然能管。

你试试:
public static void main(String args[]){
Student s = new Student("AA",10,"BB");
s.school = "CC";
System.out.println(s.getInfo());
}
追问
那set()都没用到为什么可以给private String name, private int age;赋值呢?
追答
public Student(String n,int a){
super(n,a);
}
这里调用了 父类的 构造函数,而 父类的构造函数能访问父类的 private 属性。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式