1、多态的分类:java
一、引用多态:父类的引用能够指向本类的对象,父类引用能够指向子类对象,子类引用不能指向父类对象;安全
二、方法多态:建立本类对象时,调用的方法为本类方法;建立子类对象时,调用的方法为子类重写的方法或者继承的方法;spa
三、若是子类里有一个独有的方法,并非从父类中继承过来的,那么就不能经过父类的引用调用子类独有的方法。设计
2、引用类型转换:code
一、向上类型转换(隐式/自动类型转换),是小类型到大类型的转换,不存在风险;
orm
二、向下类型转换(强制类型转换),是大类型到小类型的转换,存在风险;对象
三、instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题;继承
Dog dog=new Dog(); Animal animal =dog;//向上类型转换 Dog dog2=(Dog)animal; Cat cat =(Cat)animal;//一、编译时不会报错二、实际开辟的内存空间为dog类型,会报错
instanceof运算符,能够判断一个引用是不是某个类型或者是某个类型的子类型,返回一个布尔值;
接口
Dog dog=new Dog(); Animal animal =dog;//向上类型转换 Dog dog2=(Dog)animal; if(animal instanceof Cat){ Cat cat =(Cat)animal; }else{ System.out.println("没法进行类型转换"); }
3、抽象类abstruct:
内存
一、某些状况下,某个父类只是知道其子类应该包含怎样的方法,可是没法准确知道这些子类如何实现这些方法。抽象类是约束子类具备哪些特征,即关注子类应该具备那些方法,而并不关注子类如何去实现;
二、从多个具备相同特征的类中抽象出一个抽象类,以这个抽象类做为子类的模板,从而避免了子类设计的随意性。
4、接口interface:
一、接口能够理解为一个特殊的类,由全局的常量和公共的抽象方法组成;
二、类是一种具体的实现提,而接口定义了某一批类所须要遵照的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,他只规定这些类里必须提供某些方法。接口实际上是一个规范,是用来约束类的;
三、接口是能够多继承的,类只能单继承。接口能够弥补类单继承的不足;
四、若是要继承父类,继承的接口必须在实现接口以前。