多态详解
一共有两种类型的强制类型转换:
(1)向上类型转换(upcast):比如说将cat类型转换为Animal类型。就是将子类型转换为父类型。对于向上类型转换,不需要显式指定。
(2)向下类型转换(downcast):比如说将Animal类型转换为cat类型。即将父类型转化为子类型。对于向下类型转换需要显式指定(必须要使用强制类型转换)。
抽象类
抽象类(abstract class):使用abstract关键字所修饰的类叫做抽象类。抽象类无法实例化,也就是说不能new出来一个抽象类的实例(对象)。
抽象方法(abstract method):使用abstract关键字修饰的方法叫做抽象方法。抽象方法定义在抽象类中。相对于抽象方法,之前所定义的类叫做具体方法(有声明有实现即有花括号)。
如果一个类包含抽象方法,那么这个类一定是一个抽象类。
如果某个类是抽象类,那么该类可以包含具体方法。
如果一个类包含了抽象方法,那么这个类一定要声明成abstract class。也就是说,该类一定是抽象类;反之,如果一个类是抽象类,那么该类既可以包含抽象方法,也可以包含具体方法。
无论何种情况,只要是一个类是抽象类,那么这个类就无法实例化。
在子类继承父类(父类是个抽象类)的情况下,那么该子类必须要实现父类中所定义的所有抽象方法;否则,该子类需要声明成一个abstract class。
接口(interface):接口的地位等同于class,接口中的所有的方法都是抽象方法。在声明接口的方法时,可以使用abstract关键字,也可以不适用。通常情况下,都会省略掉abstract关键字。
可以将接口看作是特殊的抽象类(抽象类中可以有具体方法,也可以有抽象方法,而接口只能有抽象方法不能有具体方法)。
一个类实现了某个接口,那么该类必须要实现接口中声明的所有方法,如果该类是个抽象类,那么就无需实现接口中的方法。
Java是单继承的,也就是说某个类只能有唯一一个父类;一个类可以实现多个接口,多个接口可以使用逗号隔开。
多态:所谓多态就是父类型的引用可以指向子类型的对象,或者接口类型的引用可以指向实现该接口的类的实例。关于接口与实现接口的类之间的强制类型转换与父类与子类之间的强制类型转换方式一样。
static关键字:可以用于修饰属性,也可以用于修饰方法,还可以修饰类。
网友评论