课程名称:Java工程师2022版
课程章节:Java多态(上)
课程内容:
Java多态的概念,意义,分类,必要条件
向上转型、向下转型、绑定机制
抽象方法和抽象类
课程收获:
多态:
意味着允许不同类的对象对同一消息做出不同的响应。
多态分为编译时多态、运行时多态。
编译时多态:体现在设计时多态的方法重载。
运行时多态:体现在程序运行时动态决定调用哪个方法。
多态的必要条件:
-满足继承关系。
-父类引用指向子类对象。
绑定机制
将一个方法调用与同一个方法所在的类连接在一起,分为静态绑定与动态绑定
静态绑定是指在程序运行之前进行绑定(由编译器和链接程序完成的),也叫前期绑定。
动态绑定是在程序运行期间由JVM根据对象的类型自动的判断应该调用哪个方法,也叫后期绑定。
向上转型(隐式转型、自动转型)
Animal one = new Cat();
父类引用指向子类实例,可以调用子类重写父类的方法以及父类派生的方法,无法调用子类独有方法。
小类转型为大类
向下转型(强制类型转换)
Cat temp = (Cat)one;
子类引用指向父类对象,此处必须进行强制转换,可以调用子类特有的方法
必须满足转型条件才能进行强转
instanceof运算符:返回 true / false
if ( one instanceof Cat ) 判断是否能强转
定义抽象类的意义在于:
为其子类提供一个公共的类型(父类引用指向子类对象)
封装子类中的重复内容(成员变量和方法)
将父类设计成抽象类后既可借由父子继承关系限制子类的设计随意性,在一定程度上避免了无意义父类的实例化。
特点:
抽象类不允许直接实例化,换句话说抽象类不能创建对象,他只能作为其他类的父类。但可以通过向上转型,指向子类实例。
当类中存在抽象方法,则必须声明为抽象类。但是抽象类中可以没有抽象方法。
一个类继承抽象类后,必须实现其所有抽象方法,否则也是抽象类。不同的子类对父类的抽象方法可以有不同的实现。
abstract方法不能用static和private修饰;对于类,不能同时用final和abstract修饰。因为final关键字使得类不可继承,而abstract修饰的类如果不可以继承将没有任何意义。两者放在一起,也会引发编译异常。
共同学习,写下你的评论
评论加载中...
作者其他优质文章