菜鸟文生北海糖的Java之路——多态+阶段性练习

01、多态

对象的多种形态
1、引用多种形态

父类的引用可以指向本类的对象
父类的引用可以指向子类的对象
继承是实现多态的基础
2、方法多态
创建本类对象时,调用的方法为本类方法
创建子类对象时,调用的方法为子类重写的方法或者继承的方法

**个人作业如下图:
**
1、先创建父类classVehical
在这里插入图片描述
2、然后分别创建子类:Airplane、Boat、Bus、Subway、Train
在这里插入图片描述
在Airplane子类独自创建一个方法fly

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
main方法中,创建对象,为变量赋值,调用方法**。注意fly方法的独自使用,没有继承引用父类的方法,所以需要独自创建对象,调用fly方法。**
在这里插入图片描述

在这里插入图片描述

02、多态的引用类型转换

1、向上类型的转换(隐式/自动类型转换),是小类型到大类型的转换 无风险
2、向下类型的转换(强制类型的转换),是大类型到小 类型 有风险

在这里插入图片描述
大类型到小类型容易发生数据的溢出,存在风险。
3、instanceof运算符,来解决引用对象的类型,避免类型转换的安全性问题

"="赋值是将右边的值赋予给左边的值,从右到左,类型转换时,将右边的类型转换成左边的类型
在这里插入图片描述
运行结果为:
在这里插入图片描述
使用instanceof进行数据的转换,避免报错。

03抽象类

**1、定义:抽象类前使用abstract关键字修饰,则该类为抽象类 **
2、应用场景:
a、在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类是如何实现这些方法的。
b、从多个具有相同特征的类抽象出一个抽象类,以这个抽象类作为类的模板,从而避免了子类设计的随意性
3、作用:限制规定子类必须实现某些方法,但不关注细节
4、使用规则
a、abstract定义抽象类
b、abstract定义抽象方法只有声明,不需要实现。
c、包含抽象方法的类是抽象类
d、抽象类可以只包含普通的方法,没有抽象的方法
e、抽象类不能直接创建,可以定义引用变量

如下图:
父类:
在这里插入图片描述
子类:
在这里插入图片描述
子类:
在这里插入图片描述
测试类:
在这里插入图片描述输出结果:

通过键盘来打电话
通过键盘发短信
通过语音打电话
通过语音发短信

思考总结:运用多态的方法来父类引用子类,创建对象,用子类的对象调用父类的方法即继承的方法。

04接口

1、接口概念
接口可以理解为一种特殊的类,由全局常量和公共的抽象方法组成。

类是一种具体实现体,而接口定义了某一批类**所需要遵守的规范,**接口不关心这些内部的数据,也不关心这些类里方法实现的细节,它只提供这些类里必须提供某些方法。

2、接口定义
和类的定义不同定义,接口不再使用class关键字,而是使用interface关键字。
基本语法:
[修饰符]interface 接口名[extends 父接口1、父接口2…]

在这里插入图片描述
接口名[extends 父接口1 …为可选项]
**接口里面的{内容}全为常量或者抽象方法,修饰符后用abstract修饰 **

3.接口定义
常量:接口的属性是常量,即使定义时不添加public static final修饰符,系统也会自动加上。
方法:接口中的方法也是抽象方法,总是使用,即使不添加,系统也会自动添加public abstract修饰符

4.使用接口
一个类可以实现一个或多个接口,实现接口使用implements关键字。Java中的一个类只能继承一个父类,不够灵活,通过实现多个接口可以作补充。

在这里插入图片描述
5、类比抽象类

在这里插入图片描述
//两个不同的对象具有同样的方法,那么可以使用接口来继承它的方法

实操过程:

01、创建接口
在这里插入图片描述
接口中 方法 不能有方法体,同时方法的访问修饰符不能是 private 和 protected

1、创建接口时,往往接口名以大写字母I开头。如果还想继承其他父接口可以用 add功能选项添加。abstract关键字可以省略

02继承父类接口
在这里插入图片描述
2、SmartPhone和IPlayGame具有同样的功能,所以用SmartPhone接入接口IPlayGame ,用SmartPhone实现IPlayGame功能
实现接口可以在继承父类的子类当中,父类接implements ,然后接接口名,自动调用payGame方法

**03、**创建Psp类
在这里插入图片描述
因为Psp有游戏的功能,所以要遵守接口的规范,在后面implement IPlayGame通过接口可以描述两个不同类的特征。

04、引用接口
在这里插入图片描述
运行结果为:
在这里插入图片描述
引用接口:在Initial当中,用接口的引用指向,实现了的接口对象。

接口作用的本质是,将不同类具有同一功能特性(方法)的对象,集合在一起实现。

使用接口:

接口在使用的过程中,还经常与匿名内部类使用。
匿名内部类就是没有名字的内部类。
多用于关注实现而不关注实现内部类的名称。

 在这里插入图片描述
接口中方法不能有方法体

在这里插入图片描述
上面是接口匿名内部类的第二种实现方式。

05UML简介

1、UML概念
Unified Moding Language(UML)统一建模语言或标准建模语言
是一个支持模型化和软件系统开发的图形语言
为软件开发的所有阶段提供模型化和可视化支持
2、UML图示
UML2.2中一共定义了14种图示(diagrams)
3、常用UML图
1、用例图(The Use Case Diagram)
用例图能够以可视化的方式,表达系统如何满足所收集业务的规则,以及特定的用户需求信息。
在这里插入图片描述
2、系列图

在这里插入图片描述
3、类图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
网站无法下载,直接用电脑管家下载站

06阶段练习

**一、练习题目:**
父类对象:人类    
父类属性:语言:人语

子类对象:中国人、英国人、日本人…
子类属性汉语、英语、、日语、法语…

二、代码实现
1、eclipse只是工具,任何方法都可以直接书写实现。
2、两个类必须要有继承关系才能使用多态,才能用父类对象创建对象或者子类对象创建对象,调用方法。

父类
在这里插入图片描述
子类1
在这里插入图片描述
子类2
在这里插入图片描述
测试
在这里插入图片描述
运行结果:
在这里插入图片描述
**因为发现父类中只是用来指定规则,没有用到类的方法,所以可以使用抽象类。 **
用抽象类作为父类,来进行规范。

创建抽象类:
在这里插入图片描述

把之前所有的Person对象改为APerson,输出的结果一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值