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方法么???高手指点下

解决方案 »

  1.   

    我感觉应该需要加入get方法...你属性设为私有,如果不加入get方法...那么出本类外...任何其他类都无法使用..当然用反射除外
      

  2.   

    既然是私有的成员,继承也是不能直接访问的,当然该实例的方法是可以的(一般就是get/set方法)
    反射除外
      

  3.   

    public boolean equals(Object obj) { 
    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; 
    }
      

  4.   

    有两种方式:
    1.给父类private成员变量设置访问器方法。
    2.通过java反射机制是可以访问到私有成员的。
      

  5.   

    4楼的答案不行啊 school 怎么办????
      

  6.   

    都设置为私有的了,其他的怎么都直接访问不到。可以考虑加一个方法,public String getPrivate(){
    return this.name;
    }
    或者是加一个static的public方法
      

  7.   

    get set 访问  
    这就是 javabean规范。。呵呵
      

  8.   


    方法之一:加getXXX()来向外提供private型数据。
    不过,从你的设计意图来看,由于name与age子类是要继承的,因此:更好的能表达意图的应该将private改为protected,让子类能继承下去。那个private的school也建议改为:protected。