举例
父类有4个方法,子类中重构了3个,并且有一个新方法
子类没有方法4,但是因为子类的构造函数会执行super(),相当于构造了一个父对象,就会默认拥有父类的所有方法(包括私有方法,只不过不能访问:可以通过父类的公有方法访问私有方法)
父类 x=new 子类();
这一语句先执行父类的构造方法,再执行子类的构造方法。从而做到了先拥有父类的所有方法,然后如果子类有相同的方法就会把父类方法覆盖。也就实现了多态。但x本质还是一个父类对象,所以对于子类的新方法,无法访问。
这些就是x可以使用的所有方法,但是在内存中,子类的新方法也是存在的,只不过父类无法使用。
通过将父类对象转换为子类对象就可以实现访问新方法。
static 方法是无法继承的,它不属于对象,属于类本身。这也就是为什么父类型和子类型有相同的static方法,但是父对象调用的static方法是父类的,子对象调用的static方法是子类的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)