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. 接口作为参数


相关文章
|
7天前
|
存储 Oracle Java
java零基础学习者入门课程
本课程为Java零基础入门教程,涵盖环境搭建、变量、运算符、条件循环、数组及面向对象基础,每讲配示例代码与实践建议,助你循序渐进掌握核心知识,轻松迈入Java编程世界。
63 0
|
13天前
|
负载均衡 Java API
grpc-java 架构学习指南
本指南系统解析 grpc-java 架构,涵盖分层设计、核心流程与源码结构,结合实战路径与调试技巧,助你从入门到精通,掌握高性能 RPC 开发精髓。
103 7
|
14天前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
119 0
|
1月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
97 1
|
1月前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
55 5
|
1月前
|
Java API 容器
Java基础学习day08-2
本节讲解Java方法引用与常用API,包括静态、实例、特定类型方法及构造器引用的格式与使用场景,并结合代码示例深入解析。同时介绍String和ArrayList的核心方法及其实际应用。
117 1
|
1月前
|
Java 程序员
Java基础学习day08
本节讲解Java中的代码块(静态与实例)及其作用,深入介绍内部类(成员、静态、局部及匿名)的定义与使用,并引入函数式编程思想,重点阐述Lambda表达式及其在简化匿名内部类中的应用。
103 5
|
20天前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
86 1
|
20天前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
90 1
|
1月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案