Object类是所有类的父类
在理解子类重写父类的方法就会默认调用子类的方法之前,我们需要认识一下Object类。
Object是Java默认提供的一个类。Java里面除了Object类,所有的类都是存在继承关系的。默认会继承Object父类。即所有类的对象都可以使用Object的引用进行接收。
class Person {//理解为class Person extends Object
public String name = "GGBoy";
@Override
public String toString() { //重写了Object的tostring方法
return "name: "+name;
}
}
class Student extends Person {//理解为Student继承了Person,也继承了Object
}
public class Test {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person);
/* person.toString();//调用继承的tostring
Object obj = new Person();向上转型
Object obj2 = new Student();*/
}
}
Object所有的方法
过程理解
第一幅图:实例化person后进行输出。
第二幅图:当我查看println的时候,Object后的 x 的数值为person,但接收它的却是Object,原因就是发生了向上转型。 x 的值又传给了valueof,随即我们查看valueof。
第三幅图:valueof进行了空值判断。不为空就调用obj.toString方法,此时的toString方法有父类和子类重写的,此时进行下一步的动作为动态绑定。
第四幅子类图:若是子类重写了toString方法,则调用子类的toString方法。
第五幅父类图:若是子类没有重写toString方法,则调用父类的toString方法。
总结
子类重写父类的方法就会默认调用子类的方法?
1.理论上来说为动态绑定
2.通过过程图能够串起来理解。