java学习之高级语法(五)----- 多态

简介: java学习之高级语法(五)----- 多态

 多态性指的是对象而不是类

对象的多态性指的是:一个对象拥有多种形态

代码中体现多态性其实就是一句话:父类引用指向子类对象

格式:

父类名称  对象名 = new 子类名称();

或者

接口名称  对象名 = new 实现类名称();

访问成员变量的两种方法:

1. 直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上查找

2. 间接通过成员方法访问成员变量:看方法属于谁,优先用谁,没有则向上查找

    子类没有覆盖重写就是父类

    子类覆盖重写了就是子类

在多态的代码中,成员方法的访问规则是:看new 的是谁,就优先用谁,没有则向上查找

口诀:编译看左 ,运行看右 。

对比:

成员变量   ---  编译看左边,运行还看左边

成员方法  ---  编译看左边,运行看右边

多态的好处:

image.gif编辑

向上转型一定是安全的,没有问题的,正确的。但是也有一个弊端:对象一旦向上转型为父类,那么就无法调用子类原本特有的内容。

解决方案:用对象的向下转型【还原】

image.gif编辑

如何才能知道一个父类引用的对象,本来是什么子类?

格式:   对象  instanceof  类名称

这样写将会得到一个boolean值结果,也就是判断前面的对象能不能当做后面类型的实例。

接口多态的综合案例 --- 笔记本电脑

背景描述:笔记本电脑通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。

案例描述:定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想在电脑上使用也必须遵守USB规范,实现USB接口,否则鼠标和键盘生成出来也无法使用。

案例分析:

1. USB接口 --- 包含打开设备功能、关闭设备功能

image.gif编辑

2. 笔记本类 --- 包含开机功能、关机功能、使用USB设备功能

image.gif编辑

3. 鼠标类 --- 要实现USB接口并具备点击的方法

image.gif编辑

4. 键盘类 --- 要实现USB接口并具备敲击的方法

image.gif编辑

重点:

1. 接口的基本使用

2. 对象的上下转型

3. 接口作为参数


相关文章
|
29天前
|
算法 Java 程序员
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
在Java的编程世界里,多态不仅仅是一种代码层面的技术,它是思想的碰撞,是程序员对现实世界复杂性的抽象映射,是对软件设计哲学的深刻领悟。
53 9
|
29天前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
33 7
|
29天前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
40 5
|
7天前
|
Java 编译器
Java——类与对象(继承和多态)
本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
20 9
Java——类与对象(继承和多态)
|
4天前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
34 18
|
18天前
|
监控 Java 调度
【Java学习】多线程&JUC万字超详解
本文详细介绍了多线程的概念和三种实现方式,还有一些常见的成员方法,CPU的调动方式,多线程的生命周期,还有线程安全问题,锁和死锁的概念,以及等待唤醒机制,阻塞队列,多线程的六种状态,线程池等
79 6
【Java学习】多线程&JUC万字超详解
|
13天前
|
存储 Java 容器
Java 基础语法
Java是一种面向对象的编程语言,其基础语法包括类和对象、方法、变量、控制流语句、继承和多态以及异常处理。代码需写在类中,`main()`方法是程序入口,变量用于存储数据,控制流语句控制程序执行流程,继承和多态增强代码灵活性,异常处理保证程序稳定性。掌握这些知识可帮助您编写简单的Java程序。
|
18天前
|
安全 前端开发 Java
浅析JVM invokedynamic指令与Java Lambda语法的深度融合
在Java的演进历程中,Lambda表达式无疑是Java 8引入的一项革命性特性,它极大地简化了函数式编程在Java中的应用,使得代码更加简洁、易于阅读和维护。而这一切的背后,JVM的invokedynamic指令功不可没。本文将深入探讨invokedynamic指令的工作原理及其与Java Lambda语法的紧密联系,带您领略这一技术背后的奥秘。
13 1
|
22天前
|
小程序 Java
【aspose-words】Aspose.Words for Java模板语法详细剖析
本文通过详细分析Aspose.Words for Java模板语法,介绍了使用条件块、变量和动态合并表格单元格三个常用模板标签,并结合实际案例进行演示。通过这三个标签的实操,帮助读者更好地掌握Aspose.Words的使用技巧。此外,还提供了官方文档链接以便进一步学习。
66 0
【aspose-words】Aspose.Words for Java模板语法详细剖析
|
24天前
|
安全 Java 编译器
Java多态
Java多态
13 2