class Person4{
private String name ;
private int age ;
Person4(String name) {
this.name = name;
age = 21;
}
Person4(String name, int age) {
this.name = name;
this.age = age ;
} public String toString() {
return name;}
public int getAge() {
return age;}
public String getName() {
return name ;}
public boolean equals(Object obj) {
if(obj == null) {return false;}
else
if(obj instanceof Person4) {
Person4 p = (Person4)obj;
if(p.name == this.name&&p.age == this.age) {
return true;
}
}
return false;
} public String info() {
return "name :" +name + "\n"+"age :" + age ;}
}class Student4 extends Person4 {
private String school ;
Student4(String name, String school) {
super(name);
this.school = school;
}
Student4(String name , int age ,String school) {
super("zhang",23);
this.school = school;
}
public boolean equals(Object obj) {
if(obj == null) {return false;}
else
if(obj instanceof Student4) {
Student4 s = (Student4)obj ;
if(s.name == this.name&&s.age == this.age&&s.school == this.school) {
return true;
}
}
return false;
} public String toString() {
return school;
} public String info() {
return super.info() + "\n" + "school : " + school ;
}
}
public class TestET {
public static void main(String args[]) {
Person4 p1 = new Person4("zhang");
Person4 p2 = new Person4("jian",39);
Student4 s1 = new Student4("kang","DC");
Student4 s2 = new Student4("hui",20,"AB");
System.out.println(p1.equals(p2));
System.out.println(s1.equals(s2));
System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
System.out.println(s2.info());
}
}
如红色部分的引用?怎么把私有成员变量引入????要重新在Person4类中加入get方法么???高手指点下
private String name ;
private int age ;
Person4(String name) {
this.name = name;
age = 21;
}
Person4(String name, int age) {
this.name = name;
this.age = age ;
} public String toString() {
return name;}
public int getAge() {
return age;}
public String getName() {
return name ;}
public boolean equals(Object obj) {
if(obj == null) {return false;}
else
if(obj instanceof Person4) {
Person4 p = (Person4)obj;
if(p.name == this.name&&p.age == this.age) {
return true;
}
}
return false;
} public String info() {
return "name :" +name + "\n"+"age :" + age ;}
}class Student4 extends Person4 {
private String school ;
Student4(String name, String school) {
super(name);
this.school = school;
}
Student4(String name , int age ,String school) {
super("zhang",23);
this.school = school;
}
public boolean equals(Object obj) {
if(obj == null) {return false;}
else
if(obj instanceof Student4) {
Student4 s = (Student4)obj ;
if(s.name == this.name&&s.age == this.age&&s.school == this.school) {
return true;
}
}
return false;
} public String toString() {
return school;
} public String info() {
return super.info() + "\n" + "school : " + school ;
}
}
public class TestET {
public static void main(String args[]) {
Person4 p1 = new Person4("zhang");
Person4 p2 = new Person4("jian",39);
Student4 s1 = new Student4("kang","DC");
Student4 s2 = new Student4("hui",20,"AB");
System.out.println(p1.equals(p2));
System.out.println(s1.equals(s2));
System.out.println(p1.info());
System.out.println(p2.info());
System.out.println(s1.info());
System.out.println(s2.info());
}
}
如红色部分的引用?怎么把私有成员变量引入????要重新在Person4类中加入get方法么???高手指点下
反射除外
if(obj == null) {return false;}
else
if(obj instanceof Student4) {
Person4 s = (Person4)obj ; //把这行改成向上转形就好了,,,,
if(s.name == this.name&&s.age == this.age&&s.school == this.school) {
return true;
}
}
return false;
}
1.给父类private成员变量设置访问器方法。
2.通过java反射机制是可以访问到私有成员的。
return this.name;
}
或者是加一个static的public方法
这就是 javabean规范。。呵呵
方法之一:加getXXX()来向外提供private型数据。
不过,从你的设计意图来看,由于name与age子类是要继承的,因此:更好的能表达意图的应该将private改为protected,让子类能继承下去。那个private的school也建议改为:protected。