一、多态的分类:
1、引用多态:父类的引用可以指向本类的对象,父类引用可以指向子类对象,子类引用不能指向父类对象;
2、方法多态:创建本类对象时,调用的方法为本类方法;创建子类对象时,调用的方法为子类重写的方法或者继承的方法;
3、如果子类里有一个独有的方法,并不是从父类中继承过来的,那么就不能通过父类的引用调用子类独有的方法。
二、引用类型转换:
1、向上类型转换(隐式/自动类型转换),是小类型到大类型的转换,不存在风险;
2、向下类型转换(强制类型转换),是大类型到小类型的转换,存在风险;
3、instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题;
Dog dog=new Dog();
Animal animal =dog;//向上类型转换
Dog dog2=(Dog)animal;
Cat cat =(Cat)animal;//1、编译时不会报错2、实际开辟的内存空间为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("无法进行类型转换");
}
三、抽象类abstruct:
1、某些情况下,某个父类只是知道其子类应该包含怎样的方法,但是无法准确知道这些子类如何实现这些方法。抽象类是约束子类具有哪些特征,即关注子类应该具有那些方法,而并不关注子类如何去实现;
2、从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。
四、接口interface:
1、接口可以理解为一个特殊的类,由全局的常量和公共的抽象方法组成;
2、类是一种具体的实现提,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,他只规定这些类里必须提供某些方法。接口其实是一个规范,是用来约束类的;
3、接口是可以多继承的,类只能单继承。接口可以弥补类单继承的不足;
4、如果要继承父类,继承的接口必须在实现接口之前。
来源:oschina
链接:https://my.oschina.net/u/2725918/blog/672517