Java中多态应当注意

孤者浪人 提交于 2020-02-29 08:02:57

一、多态的分类:

    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、如果要继承父类,继承的接口必须在实现接口之前。



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!