class Student
{
//定义属性 学号
private String studentId;
//定义属性 姓名
private String name;
//定义属性 性别
private String sex;
//定义属性 年级
private int grade;
//定义属性 年龄
private int age;
//定义一个带参数的构造器
public Student(String sid)
{
studentId = sid;
}
//定义属性"studentId"的设置方法
public void setStudentId(String sid){
studentId = sid;
}
//定义属性"studentId"的获取方法
public String getStudentId(){
return studentId;
}
//定义属性"name"的设置方法
public void setName(String sn){
name = sn;
}
//定义属性"name"的获取方法
public String getName(){
return name;
}
//定义属性"sex"的设置方法
public void setSex(String ss){
sex = ss;
}
//定义属性"sex"的获取方法
public String getSex(){
return sex;
}
//定义属性"grade"的设置方法
public void setGrade(int sg){
grade = sg;
}
//定义属性"grade"的获取方法
public int getGrade(){
return grade;
}
//定义属性"age"的设置方法
public void setAge(int sa){
age = sa;
}
//定义属性"age"的获取方法
public int getAge(){
return age;
}
/**
 *
 *public static void main(String args[]){
  //构造一个Student的对象并且赋值;
Student s = new Student("Java00001");
//向屏幕打印出这个对象的学号;
System.out.println("学生的学号:"+s.studentId);
}
*/
}
public class StudentTest1
{
//java应用程序入口方法(表示程序的起点)
public static void main(String args[]){
//构造一个Student的对象并且赋值
Student s = new Student("Java00001");
//设置对象的年龄
s.setAge(18);

//向屏幕打印出这个学号是"java0001"的学生的年龄;
System.out.println("学生年龄: "+s.getAge());
//向屏幕打印出这个学生的学号;
System.out.println("学生学号:"+s.getStudentId());
/**大家请注意我拿红笔标记的两个代码.如果我这样写的话:
 *System.out.println("学生学号:"+s.studentId);
 *他会报错,错误提示是studentId 
 可以在 Student 中访问 privatestudentId 可以在 Student 中访问 
private,而在上面Student类中的main方法这样写却不会报错。
                
                */
                

}
}/**通过上面的两个main方法比较我发现:如果是在一段代码的同一个类里面,可以直接拿对象。去调用它的属性
 *而不在一段代码的同一个类中的话,只能去拿对象。去调用他的方法。
 谁能给我解释下这是为什么?谢谢大家了,我刚学java,有好多需要向你们高手学习的地方,还请详细地指教下*/

解决方案 »

  1.   

    为什么没人帮我解答这个困惑??我刚学java的小弟,还请各位哥哥姐姐们多照顾下小弟,这个问题我也仔细研究了,只是想搞清楚为什么会这样
      

  2.   

    private修饰的变量不能被直接访问,只能通过方法间接访问!应该这个意思吧!让高手门也说说!
      

  3.   

    封装的问题  同一个类里面的属性分为private protect,public三种,private 只允许本类里面的方法访问,其他类药访问该属性只能通过间接的方式如
    Student st = new Student();
    String sex = st.getSex();

    public允许其他类直接访问
    ,protrct 允许继承的超类或者子类直接调用 其他类间接调用 
    大概是这样 具体的可以自己去看下属
      

  4.   

    网上找本Thinking in Java 看吧~~~
      

  5.   

    private   int   grade; 
    //定义属性   年龄 
      

  6.   

    建议:
    读取属性时,都采用get方法,不要去直接使用属性,
    这样,如果那个类改变了内部数据处理方式,只要那个方法还在,就不会影响到调用者了!
      

  7.   

    private 是私有, 为了就是数据的保密性.不能被直接访问
      

  8.   

    private  只能在同一个类中访问。
    默认    能在子类和同一个包
    protected 能在同一个包中
    public   能公开访问
      

  9.   

    用protect,public可以在其他的类访问(protect要继承它或者同包)
    private不能访问从而要是想只能用方法访问的话
    比如自己新建如下的代码private String name; public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    }
      

  10.   

    谢谢啊,呵呵,我现在是一半模糊一半清楚,是不是Private 只能在同类中访问.而在不同类的话要访问Private 属性的话必须拿特有的方法才能进行访问
      

  11.   

                  java访问权限修饰符 作用域       当前类  同一package  子孙类  其他package 
    public       √        √          √       √ 
    protected    √        √          √       × 
    friendly     √        √          ×       × 
    private      √        ×          ×       × 
    不写时默认为friendly 
      

  12.   

    java中访问权限修饰符的问题:
    公开级别: public 修饰,对外公开.
    受保护级别:用protected修饰,向子类以及同一个包中的类公开.
    默认级别:没有访问控制修饰符,向同一个包中的类公开.
    私有级别:用private修饰,只有类本身可以访问,不对外公开.
      

  13.   

    private是一个私有修饰关键字,只有定义类才可以访问该属性打个比方吧,你“继承”自你父亲,你的工资单是要给他看的,但是你的日记应该是不给他看的吧,这个“日记”就是你的私有(private)属性,只有你自己可以调用,就是你的“父类”,也调用不了
      

  14.   

                                java访问权限修饰符   作用域                          本类              同一package         子孙类     其他package   
    public (公共的)              √                 √                     √               √   
    protected (受保护的)        √                 √                     √               ×   
    friendly(缺省的)            √                 √                     ×               ×   
    private (私有的)            √                 ×                     ×               ×    
     
      

  15.   

    简单的说private只能访问本类中的数据成员,你的main()方法是在 StudentId 的同类中,所以能够得到访问,但你另外又声明了一个类 StudentTest1 这个类可不是和 StudentId 在同一个类中所以不能够访问到,如果你想执行成功可以考虑有public,或
    friendly来修饰,能达到你上述的要求