public class StudentTest {
public static void main(String[] args) {
Student student=new Student();
student.show();//先调用studen里面的方法,证明重写已经成功了
System.out.println(student.getA().equals("Tom"));
System.out.println(student.getA().getName().equals("Tom"));
}
}
public class Student {
private Att a=Att.N;
public Att getA() {
return a;
}
public void setStatus(Att status) {
this.a = status;
}
public void show() {
System.out.println(a);
System.out.println(getA());
}
}
public class Att{
private String name;
public Att(String name) {
super();
this.name = name;
}
public static final Att N=new Att("Tom");
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}
student.getA()和student.getA().getName()不应该都是String类型吗?
student.getA()这个方法返回值是Att对象,跟有没有重写toString没关系
student.getA().getName()这个返回是String,因为方法返回类型就是String
使用方法,返回值是什么,你获得的就是什么
就像你买个快递,箱子上写着水果,那你从里面拿出的就应该是水果(本类谱系对象),而不应该是鸡肉(非本类谱系对象),更不能拿出一个苹果核(处理后的对象),除了拿出水果的情况,其它情况你都会打电话投诉的