2019-10-26-22:40:09

目录:

  1.多态的概念

  2.多态的分类

  3.实现多态的三个必要条件

  4.多态的格式

  5.多态成员变量的使用特点

  6.多态成员方法的使用特点

  7.多态的好处

  8.多态的向上和向下转型


1.多态的概念:

  多态性是面向对象编程的又一个重要特征,它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法在父类及其各个子类中具有不同的含义

2.多态的分类:

  编译时多态(静态):主要是指方法的重载,它是根据参数列表的不同来区分不同的方法

  运行时多态(动态):它是通过动态绑定来实现的,也就是大家通常所说的多态性。

3.实现多态的三个必要条件:

  1. 继承:在多态中必须存在有继承关系的子类和父类。

  2.重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。

  3.向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才既能可以调用父类的方法,又能调用子类的方法。

 package demosummary.polymorphic;

 public class Fu {
//定义两个变量
double d1;
double d2; //无参构造
public Fu() {
} //全参构造
public Fu(double d1, double d2) {
this.d1 = d1;
this.d2 = d2;
} //设置一个方法
public void area(double d1,double d2){
}
}
 package demosummary.polymorphic;
//创建一个继承父类的子类
public class Zi extends Fu{
//重写父类中的方法
@Override
public void area(double d1, double d2) {
double result = d1 * d2;
System.out.println("计算结果:"+result);
} //测试方法
public static void main(String[] args) {
//向上转型(多态的写法)
Fu obj = new Zi();
obj.area(3.5,3.5);
}
}

4.多态的格式:

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

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

5.多态成员变量的使用特点:

  1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找。
  2.间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找。

 package demosummary.polymorphic;
//定义一个父类
public class Fu01 {
//定义一个成员变量
int num = 10;
//定义一个成员方法
public void showNum(){
//定义一个局部变量
// int num01 = 100;
System.out.println(num);
// System.out.println(num01);
}
}
 package demosummary.polymorphic;

 public class Zi01 extends Fu01{
//定义一个成员变量
int num = 20;
//覆盖重写父类方法
@Override
public void showNum() {
//定义一个局部变量
// int num01 = 200;
System.out.println(num);
// System.out.println(num01);
}
//定义一个测试类
public static void main(String[] args) {
Fu01 obj = new Zi01();
System.out.println(obj.num);
obj.showNum();
}
}

6.多态成员方法的使用特点:

  在多态的代码当中,成员方法的访问规则是:
    看new的是谁, 就优先用谁,没有则向上找。
  口诀:编译看左边,运行看右边。
  对比一下:
    成员变量:编译看左边,运行还看左边。
    成员方法:编译看左边,运行看右边。

7.多态的好处:

  不使用多态的写法:

    Teacher one = new Teacher();

    one.work();

    Assistant two = new Assistant();

    two.work();

  使用多态的写法:

    Employee one = new Teacher();

    one.work();

    Employee two = new Assistant();

    two.work();

  对比结论:无论右边new的时候换那个子类对象,等号左边调用方法都不会变化

8.多态的向上和向下转型:

  向上转型:

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

    含义:右侧创建一个子类对象,把它当成父类看待使用

    注意事项:向上转型一定是安全的,从小范围转向大范围

  向下转型:

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

    含义:将父类对象还原成为本来的子类对象

    注意事项

      1.必须保证对象本来创建的时候。就是猫。才能向下转型成为猫。
      2.如果对象创建的时候本来不是猫,现在非要向下转型成为猫,就会报错。

Java之路---Day12(多态)的更多相关文章

  1. Java基础学习小记--多态

    题外话:总结了多年的学习心得,不得不说,睡眠是一个学习者的必需品!所谓"早起毁一天"不是没有道理哪,特别对Coders来说,有几天不是加班到夜里.好吧,我承认对于初学Java的我, ...

  2. Java之路——敬JAVA初学者(作者:MoMo)

    作为一名大四的毕业生,大学三年过,有得有失.作为一个喜欢编程,喜欢JAVA的人,自学其实是一件美事,很有意思的事.要是能再找个女朋友一起学.嘿嘿,就不枉在大学走了一遭啊!    要离开学校了,还是想留 ...

  3. java提高篇之理解java的三大特性——多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  4. Python之路,Day12 - 那就做个堡垒机吧

    Python之路,Day12 - 那就做个堡垒机吧   本节内容 项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多 ...

  5. JAVA三大特性之多态

    面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据 ...

  6. Java三大特征之多态(三)

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  7. Java之路——名词解释(一)

    一.开篇 许多人在初接触Java的时候,都会被各种Java的英文缩写名词给弄得头晕脑胀.看一个技术,内容里又会有一堆其他的技术名词,看了半天不知所云.尝试去查一下这些名词的解释,除了非常学术性的解释之 ...

  8. Java之路——环境配置与编译运行

    本文大纲 一.开篇 二.JDK下载 三.JDK安装 四.环境配置 五.初识Java编译 六.Java与Javac 七.第一个Java程序 八.总结 九.参考资料 一.开篇 通过对之前Java之路的了解 ...

  9. Java之路 ——初识Eclipse

    零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 八.Eclipse 快捷键 九.总结 一.前 ...

随机推荐

  1. flask的客户端服务端

    1.首先要进行后端与前端的连接有get 和post请求 get请求是直接在网页上打出已将定义好的网址 if __name__ == '__main__': app.run(host="loc ...

  2. 第07节-开源蓝牙协议BTStack框架代码阅读(上)

    首先来看一下,对于硬件操作,它是如何来进行处理的.在上篇文章中曾说过,在main函数里面它会调用硬件相关的代码,调用操作系统相关的代码.在BTStack中,可以搜索一下main.c,将会发现有很多ma ...

  3. 201871010132——张潇潇《面向对象程序设计JAVA》第二周学习总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...

  4. 接口测试:postman

    测试接口,postman和jmeter是用得最频繁的工具. 下面主要介绍postman测试http协议接口的用法,包含get,post(form-data,json,上传文件,cookie). pos ...

  5. swagger 配置- ssm

    swagger 配置 - ssm swagger 是一个用来看接口的工具,具体效果如下,这里用的是swagger2 1.porm.xml <dependency> <groupId& ...

  6. ppt演讲者视图不可用的解决办法

    1. 关闭ppt 2. 对着桌面右键,选择:nView Desktop Manager 3. 应用程序--增强--去掉“添加Powerpoint幻灯片显示扩展程序(W)”

  7. 浅谈JSON与与JS相关的JSON函数

    本文内容主要引用在微信公众号上看到的一片文章,因为自己对Json了解不是很深入,所以就整理出这篇博文与大家分享! 一. JSON是一种格式,基于文本,优于轻量,用于交换数据 1.一种数据格式 数据的传 ...

  8. 分享:手把手教你如何免费且光荣地使用正版IntelliJ IDEA

    https://mp.weixin.qq.com/s/6nRYmn6gAWFLg3mUIN_ojg TIPS 近日在个人技术讨论QQ群里,谈论到IDEA的那些事儿.有童鞋居然在某电商网站花钱买激活码. ...

  9. OpenCV 学习笔记(16)open创建无边框的显示窗口

    https://blog.csdn.net/weixin_41794771/article/details/93198098 讲解地址 // 1获取窗口句柄 winName 窗口名字 HWND win ...

  10. 动态的src路径怎么写

    错误写法 <div class="icon--wrapper" @click="before"> <img class="icon- ...