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 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,有好多需要向你们高手学习的地方,还请详细地指教下*/
Student st = new Student();
String sex = st.getSex();
;
public允许其他类直接访问
,protrct 允许继承的超类或者子类直接调用 其他类间接调用
大概是这样 具体的可以自己去看下属
//定义属性 年龄
读取属性时,都采用get方法,不要去直接使用属性,
这样,如果那个类改变了内部数据处理方式,只要那个方法还在,就不会影响到调用者了!
默认 能在子类和同一个包
protected 能在同一个包中
public 能公开访问
private不能访问从而要是想只能用方法访问的话
比如自己新建如下的代码private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
公开级别: public 修饰,对外公开.
受保护级别:用protected修饰,向子类以及同一个包中的类公开.
默认级别:没有访问控制修饰符,向同一个包中的类公开.
私有级别:用private修饰,只有类本身可以访问,不对外公开.
public (公共的) √ √ √ √
protected (受保护的) √ √ √ ×
friendly(缺省的) √ √ × ×
private (私有的) √ × × ×
friendly来修饰,能达到你上述的要求