为什么属性设置成了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来设置,获取属性吗? 展开
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来设置,获取属性吗? 展开
2个回答
展开全部
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方法的。
这句调用了student类的构造方法
public Student(String n,int a,String s){
this(n,a);
school = s;
}
this(n,a);调用了父类的构造方法
使用构造方法赋值是不需要setter方法的。
更多追问追答
追答
这么说吧
private 私有 是对于其他类来说 但是对于本身的类是可以直接调用和赋值的。你的构造方法是写在本类中,可以直接赋值。其他类调用的是公有的构造方法。 只要是在本类中声明的方法,都可以直接给本类中的私有变量赋值。
本类就是指私有变量所在的类
更说明白点举个例子 就相当于 你的手机是你私有的,我问你借用一下。
这里面手机就是私有变量
你就是方法,我不可以直接用你手机,但是可以通过问你借来使用
我呢 就是调用方法。 问你借 ,你来给我权限
差不多就是这个意思
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这不是你写的 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());
}
难道你是在说 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 属性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询