首先我们要知道Java是一种强类型的语言;Java语言相对于其他高级语言(如:C++是多继承,多对多的网状关系结构)有单继承(树),可封装,多态等特性。强类型也就是说,在定义变量的时候,必须指定变量的类型;并且变量类型和变量中存放的数据类型必须保持一致;又多态特性表明:
1)子类的对象也可以放入父类的引用中,因为子类对象类型从属于父类对象类型,并不违反强类型的限制;
【注意:一个对象可能存放在不同类型的引用当中(自身引用或者父类引用),但是自身对象类型从创建到销毁始终不会改变的。】
2)当我们对一个引用调用方法时,只能调用这个引用的引用类型中的方法;运行时若发现有方法覆盖,则根据对象类型,调用子类覆盖之后的方法;(一个对象可以调用的方法,要看其引用类型以及是否有方法覆盖来决定)
多态的使用场景和方法:
1)多态用在方法的参数类型上:public void m (A a );// 可以使用A类或A类的某个子类对象作为参数来调用m方法;
2)多态用在方法的返回值类型上:public A m ();// 这样的方法,可能返回 A 类的对象,也完全可能返回 A 类的某个子类的对象。也就是说,我们在方法声明中“承诺”方法会返回一个父类对象,在方法的实现中,完全可以将父类的某个子类对象作为返回值返回。