首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

对象在什么情况下可以直接去调用属性,什么情况下只能调用方法来得到属性解决方法

2012-01-10 
对象在什么情况下可以直接去调用属性,什么情况下只能调用方法来得到属性class Student{//定义属性 学号pri

对象在什么情况下可以直接去调用属性,什么情况下只能调用方法来得到属性
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,有好多需要向你们高手学习的地方,还请详细地指教下*/

[解决办法]
private修饰的变量不能被直接访问,只能通过方法间接访问!应该这个意思吧!让高手门也说说!
[解决办法]
面向对象的封装特性
[解决办法]
封装的问题 同一个类里面的属性分为private protect,public三种,private 只允许本类里面的方法访问,其他类药访问该属性只能通过间接的方式如
Student st = new Student();
String sex = st.getSex();

public允许其他类直接访问
,protrct 允许继承的超类或者子类直接调用 其他类间接调用 
大概是这样 具体的可以自己去看下属
[解决办法]
网上找本Thinking in Java 看吧~~~
[解决办法]
先找本面向对象的书看看吧
[解决办法]
private int grade; 
//定义属性 年龄
[解决办法]
private 是私有, 为了就是数据的保密性.不能被直接访问
[解决办法]
private 只能在同一个类中访问。
默认 能在子类和同一个包
protected 能在同一个包中
public 能公开访问



[解决办法]
用protect,public可以在其他的类访问(protect要继承它或者同包)


private不能访问

从而要是想只能用方法访问的话
比如自己新建如下的代码

Java code
private String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }
[解决办法]
我运行的时候没错误 注意查看你的运行类名 是否正确
[解决办法]
看了我这个 想不明白都难
[解决办法]
java中访问权限修饰符的问题:
公开级别: public 修饰,对外公开.
受保护级别:用protected修饰,向子类以及同一个包中的类公开.
默认级别:没有访问控制修饰符,向同一个包中的类公开.
私有级别:用private修饰,只有类本身可以访问,不对外公开.
[解决办法]
公有的都可以调用,私有的就不行了
[解决办法]
private是一个私有修饰关键字,只有定义类才可以访问该属性

打个比方吧,你“继承”自你父亲,你的工资单是要给他看的,但是你的日记应该是不给他看的吧,这个“日记”就是你的私有(private)属性,只有你自己可以调用,就是你的“父类”,也调用不了
[解决办法]
java访问权限修饰符

作用域 本类 同一package 子孙类 其他package
public (公共的) √ √ √ √
protected (受保护的) √ √ √ ×
friendly(缺省的) √ √ × ×
private (私有的) √ × × ×
 
[解决办法]
简单的说private只能访问本类中的数据成员,你的main()方法是在 StudentId 的同类中,所以能够得到访问,但你另外又声明了一个类 StudentTest1 这个类可不是和 StudentId 在同一个类中所以不能够访问到,如果你想执行成功可以考虑有public,或
friendly来修饰,能达到你上述的要求


热点排行