对象在什么情况下可以直接去调用属性,什么情况下只能调用方法来得到属性
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要继承它或者同包)