<--------------------------Java多态如何使用------------------------------>
11多态调用的三种格式
* A:多态的定义格式:
* 就是父类的引用变量指向子类对象
父类类型 变量名 = new 子类类型();
变量名.方法名();
* B: 普通类多态定义的格式
父类 变量名 = new 子类();
* C: 抽象类多态定义格式
抽象类 变量名 = new 抽象类子类();
* D: 接口多态定义的格式
接口 变量名 = new 接口实现类();
* E: 注意事项
同一个父类的方法会被不同的子类重写。在调用方法时,调用的为各个子类重写后的方法。
12 instanceof关键字
* A: 作用
可以通过instanceof关键字来判断某个对象是否属于某种数据类型。如学生的对象属于学生类,学生的对象也属于人类(测试的时候前父后子)
*B:用法
声明父类变量名 声明子类变量名 Boolean b = s2 instanceof Person;//前父后子为flase (父属于子) 前面是子类变量名 后面是定义的父类 System.out.println(b);
13 多态-向上转型
* A: 多态的转型分为向上转型与向下转型两种:
* B: 向上转型:当有子类对象赋值给一个父类引用时,便是向上转型,多态本身就是向上转型的过程。
使用格式:
父类类型 变量名 = new 子类类型();
14 多态-向下转型
* A: 向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用转为子类引用,这个过程是向下转型。如果是直接创建父类对象,是无法向下转型的!
使用格式:
子类类型 变量名 = (子类类型) 父类类型的变量;
如:Student stu = (Student) p; //变量p 实际上指向Student对象
总结:
向上转型:(子类转为父类,自动转型)
格式 :父类类型 变量名 = new 子类类型();
注:子类赋值给父类,那这时这个父类就能调用子类的方法
向下转型:(父类转为子类,强制转型)
格式: 子类类型 变量名 = (子类类型) 父类类型的变量;
注:对于向下的类型转换,必须要显式指定,即必须要使用强制类型转换。并且父类型的引用必须指向子类的对象,即指向谁才能转换成谁。
而直接创建的父类对象,是无法向下转型的;调用的还是子类的方法而并不是父类的方法。
例子:
父类:
public class Fu {
public int num=66;
void show(){
System.out.println("Fu的显示"); }
}
子类:
public class Zi extends Fu{
public static int num=77;
void show(){
System.out.println("子类中的show方法");
}
}
测试类:
public class Test {
public static void main(String[] args) {
Fu f = new Zi();// 编译时期:参考应用类型变量所属的类 如果类中没有调用的方法 编译失败
f.show();// 运行时期:引用类型变量所指的对象所属的类 并运行所属类中的方法
//成员方法:编译看左边 运行看右边
//成员变量:编译运行全看左边
int a=f.num;
System.out.println(a);
}
}
15 多态的好处和弊端
* 当父类的引用指向子类对象时,就发生了向上转型,即把子类类型对象转成了父类类型。
* 向上转型的好处是隐藏了子类类型,提高了代码的扩展性。
* 但向上转型也有弊端,只能使用父类共性的内容,而无法使用子类特有功能,功能有限制。
总结: 创建多态在继承的关系上
使用向下转型 *****
使用instanceof 方法
多态 运行看右边 编译的看左边 *****
<--------------------------Java多态如何使用------------------------------>的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- C++基础知识:泛型编程
1.泛型编程的概念 ---不考虑具体数据类型的编程模式Swap 泛型写法中的 T 不是一个具体的数据类型,而是泛指任意的数据类型. 2.函数模板 - 函数模板其实是一个具有相同行为的函数家族,可用不同 ...
- win10 安装 mysql-8.0.12
安装mysql 8 1.下载 https://dev.mysql.com/downloads/mysql/ 2.设置环境变量 将你解压后的文件里边的bin目录加入到path中.例如:D:\develo ...
- TextRank算法
TextRank是一种用来做关键词提取的算法,也可以用于提取短语和自动摘要.因为TextRank是基于PageRank的,所以首先简要介绍下PageRank算法. (1)PageRank PageRa ...
- 前端关于列表的基础 day47
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="utf-8&qu ...
- chromium ③
chromium源码学习笔记(1) -- 学习计划 对于c++开发者来说,chromium几乎是目前最值得学习的优秀开源代码.先看看chromium包含了多少令人激动的特性: 1, ...
- wxPython的使用--类似画板的界面
# -*- coding: utf-8 -*-import wximport wx.lib.buttonsimport cPickleimport os class PaintWindow(wx.Wi ...
- c#帮助文档chm打不开的问题
c# 帮助文档,chm 格式, 不可以放在含有字符 # 的文件夹下(包括当前文件夹和上级文件夹),文件名也不可以含有 # 字符, 否则会打不开.
- to linux
apt-get update // 更新 apt sudo apt-get install git // 安装git git clone git://github.com/yyuu/pyenv.git ...
- Httpclient的学习(一)
1.名词解释 抓包: 抓包(packet capture)就是将网络传输发送与接收的数据包进行截获.重发.编辑.转存等操作,也用来检查网络安全.抓包也经常被用来进行数据截取等. Httpclient: ...
- Spring Boot 揭秘与实战(二) 数据存储篇 - 声明式事务管理
文章目录 1. 声明式事务 2. Spring Boot默认集成事务 3. 实战演练4. 源代码 3.1. 实体对象 3.2. DAO 相关 3.3. Service 相关 3.4. 测试,测试 本文 ...

