封装、继承、多态,这是面向对象的三大特性。这三大特性中,有两个特性都与父类有着深深的关联:
- 继承:是指子类可以获得父类的属性和方法。
- 多态:是指父类引用可以指向父类对象,也可指向子类对象。在调用时,父类的引用可以根据引用具体指向的对象去调用。
可见,父类概念的区分在面向对象的设计中十分基础也十分重要。但实际上,大多数开发者对父类的概念有不小的认知偏差。本文我们将讨论这一点。
传统认知的误区
首先我们给出一个问题。
问题1:矩形是不是正方形的父类?
请先在心中给出这个问题的答案,然后在继续阅读本文。
接下来,我们给出矩形类Rectangle和正方形类Square中的方法(省略方法的具体实现),如下所示。
矩形类:
public class Rectangle {
private double length;
private double width;
private String color;
public Rectangle(double length, double width, String color) {}
public vo