Java知识26 多态 (重点巩固)【多测师】
一、多态 多态就是同一个行为有多个不同表现形式和形态的能力 比如: flash界面按F1按键弹出是AS 3帮助文档 在Word下弹就是Word帮助 二、多态存在的三个必要条件 继承、重写、父类引用指向子类对象 Parent p = new Child(); 三、使用多态调用方法时,先检查父类中是否有该方法,没有则编译错误,有 再去调用子类的同名方法 实例如下: abstract class Animal { //定义了一个抽象类 abstract void eat(); //定义一个抽象方法 } class Cat extends Animal { //子类Cat继承父类Animal public void eat() { //定义吃的方法 System.out.println("吃鱼"); } public void work() { System.out.println("抓老鼠"); } } class Dog extends Animal { //子类Dog继承父类Animal类 public void eat() { System.out.println("吃骨头"); } public void work() { System.out.println("看家"); } } 方法调用如下: public class Test { public static void main(String[] args) { show(new Cat()); // 以 Cat 对象调用 show 方法、new一个对象,然后直接调用这个对象的show()方法。 show(new Dog()); // 以 Dog 对象调用 show 方法 Animal a = new Cat(); // 向上转型 a.eat(); // 调用的是 Cat 的 eat Cat c = (Cat) a; // 向下转型 c.work(); // 调用的是 Cat 的 work } public static void show(Animal a) { a.eat(); // 类型判断 if (a instanceof Cat) { // 猫做的事情 Cat c = (Cat) a; c.work(); } else if (a instanceof Dog) { // 狗做的事情 Dog c = (Dog) a; c.work(); } } } 四、虚方法 方法的重新:子类能够重新父类的方法 子类对象调用重新的方法 调用的是子类的方法 而不是父类中被重写的方法 要想调用父类中被重写的方法 则必须使用关键字super 如下:实例化了俩个对象:一个使用Salary引用s,另一个使用Employee引用e. Salary s = new Salary("员工 A", "北京", 3, 3600.00); Employee e = new Salary("员工 B", "上海", 2, 2400.00); 五、多态的实现方式 方式一:重写(详情Java知识25 重写和重载) 方式二:生活中接口最具代表性的就是插座 方式三:抽象类和抽象方法 六、多态总结 1.使用父类类型的引用指向子类的对象 2.该引用只能调用父类中定义的方法和变量 3.子类重写父类的方法,调用这个方法的时候,会调用子类中的这个方法(动态连接、动态调用) 4.变量不能被重写,重写的概念只针对方法 重写了变量编译会直接报错,类的属性变量是可以重写的。 七、构造子类对象时的构造方法的调用顺序 1.先调用超类的构造方法,多重超类首先调用最远超类的方法 2.然后再执行当前子类的构造方法
分类:
多测师_Java编程相关
标签:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)