class Person {
String name;
int age;
public void setName(String name) {this.name = name;}
public void setAge(int age) {this.age=age;}
public String getName() {return name;}
public int getAge() {return age;}
public String getInfo() {
return "Name: "+ name + "\n" +"age:"+ age;
}
}
class Student extends Person {
private String school;
public String getSchool() {return school;}
public void setSchool(String school)
{this.school = school;}
public String getInfo() {
return "Name: "+ name +"\n" +"age: "+age
+ "\n" +"school: "+getSchool();
}}
public class TestOverWrite {
public static void main (String args[]) {
Student student = new Student();
Person person = new Person();
person.setName("none");
person.setAge(1000);
student.setName("john");
student.setAge(18);
student.setSchool("SCH");
System.out.println(person.getInfo());
System.out.println(student.getInfo()); }
}return "Name: "+ name + "\n" +"age:"+ age;中返回的name,age指的是成员变量还是局部变量?怎么判别的?
String name;
int age;
public void setName(String name) {this.name = name;}
public void setAge(int age) {this.age=age;}
public String getName() {return name;}
public int getAge() {return age;}
public String getInfo() {
return "Name: "+ name + "\n" +"age:"+ age;
}
}
class Student extends Person {
private String school;
public String getSchool() {return school;}
public void setSchool(String school)
{this.school = school;}
public String getInfo() {
return "Name: "+ name +"\n" +"age: "+age
+ "\n" +"school: "+getSchool();
}}
public class TestOverWrite {
public static void main (String args[]) {
Student student = new Student();
Person person = new Person();
person.setName("none");
person.setAge(1000);
student.setName("john");
student.setAge(18);
student.setSchool("SCH");
System.out.println(person.getInfo());
System.out.println(student.getInfo()); }
}return "Name: "+ name + "\n" +"age:"+ age;中返回的name,age指的是成员变量还是局部变量?怎么判别的?
return "Name: "+ name + "\n" +"age:"+ age; //这里有定义局部变量吗?肯定是成员变量
}
class Person {
String name;
int age;
public void setName(String name) {this.name = name;}
public void setAge(int age) {this.age=age;}
public String getName() {return name;}
public int getAge() {return age;}
public String getInfo() {
return "Name: "+ name + "\n" +"age:"+ age; }
}如上Person 它一个公共的实体类,它没有设置访问权限,所以它里面属性都是public公共的,也就是成员变量了, 但这样补办不提倡的,安全性太低,一般实体类的属性访问权限是private的,这样安全性能高,值只有自身可以改变,反则子类也可改变其成员变了的值,是很不安全的。
{
String name = "XiaoBai";
int age = 12;
if (name != null)
{
return "Name: "+ name + "\n" +"age:"+ age; //这里访问的是局部变量
}
return "Name: "+ this.name + "\n" +"age:"+ this.age; //这里访问的是成员变量
}
如果放在其他类当中就不行了
楼主的理解是正确的,任何引用成员变量的时候是要对象名.成员变量名(java中常叫 field);既然是这样,那么此处为什么可以不需要这样做呢?原因是对于非静态的方法来说,都有一个参数,称之为隐式参数,也就是this,指向当前调用方法的对象;
如果在方法中引用成员变量时没有显示指定对象名,编译器会给你加上去;
相当于编译器做了这样的处理:public String getInfo(Person this) {
return "Name: " + this.name + "\n" + "age:" + this.age;
} 所以上面即使没有显示的指定对象名同样可以运行,是编译器给你加上去了。还说句,静态方法中为什么不能像上面一样使用成员变量,原因就是静态方法中不存在这个隐式参数this,而任何引用成员变量的时候是要对象名.成员变量名的。以上只是个人理解,希望能帮上忙。