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多态如何使用------------------------------>的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. C++基础知识:泛型编程

    1.泛型编程的概念 ---不考虑具体数据类型的编程模式Swap 泛型写法中的 T 不是一个具体的数据类型,而是泛指任意的数据类型. 2.函数模板 - 函数模板其实是一个具有相同行为的函数家族,可用不同 ...

  2. win10 安装 mysql-8.0.12

    安装mysql 8 1.下载 https://dev.mysql.com/downloads/mysql/ 2.设置环境变量 将你解压后的文件里边的bin目录加入到path中.例如:D:\develo ...

  3. TextRank算法

    TextRank是一种用来做关键词提取的算法,也可以用于提取短语和自动摘要.因为TextRank是基于PageRank的,所以首先简要介绍下PageRank算法. (1)PageRank PageRa ...

  4. 前端关于列表的基础 day47

    <!DOCTYPE html><html lang="zh-CN"><head> <meta charset="utf-8&qu ...

  5. chromium ③

    chromium源码学习笔记(1) -- 学习计划       对于c++开发者来说,chromium几乎是目前最值得学习的优秀开源代码.先看看chromium包含了多少令人激动的特性:     1, ...

  6. wxPython的使用--类似画板的界面

    # -*- coding: utf-8 -*-import wximport wx.lib.buttonsimport cPickleimport os class PaintWindow(wx.Wi ...

  7. c#帮助文档chm打不开的问题

    c# 帮助文档,chm 格式, 不可以放在含有字符 # 的文件夹下(包括当前文件夹和上级文件夹),文件名也不可以含有 # 字符, 否则会打不开.

  8. to linux

    apt-get update // 更新 apt sudo apt-get install git // 安装git git clone git://github.com/yyuu/pyenv.git ...

  9. Httpclient的学习(一)

    1.名词解释 抓包: 抓包(packet capture)就是将网络传输发送与接收的数据包进行截获.重发.编辑.转存等操作,也用来检查网络安全.抓包也经常被用来进行数据截取等. Httpclient: ...

  10. Spring Boot 揭秘与实战(二) 数据存储篇 - 声明式事务管理

    文章目录 1. 声明式事务 2. Spring Boot默认集成事务 3. 实战演练4. 源代码 3.1. 实体对象 3.2. DAO 相关 3.3. Service 相关 3.4. 测试,测试 本文 ...