1. 多态

多态:同一个对象(实物),在不同时刻体现出来的不同状态

多态的前提:

A:要有继承关系

B:要有方法重写

C:要有父类引用指向子类对象

父类 f = new 子类()

多态中的成员访问特点:

A:成员变量

编译看左边,运行看左边

B:构造方法

创建子类的时候,访问父类的构造方法,对父类的数据进行初始化

C:成员方法

编译看左边,运行看右边

D:静态方法

编译看左边,运行看右边(静态和类相关,算不上重写,所以访问还是左边的)

由于成员方法存在方法重写,所以它运行看右边

 

多态的好处:

  1. 提高了代码的维护性(继承保证)
  2. 提高了代码的扩展性(由多态保证)

多态的弊端:

  1. 不能使用子类的特有功能

把父类的引用强制装换为子类的引用(向下转型)

1.猫和狗多态练习

class Anamial{public void eat(){System.out.println("动物吃");}}class Dog extends Anamial{public void eat(){System.out.println("狗吃骨头");}public void lookDoor(){System.out.println("狗看门");}
}class Cat extends Anamial{public void eat(){System.out.println("猫吃鱼");}public void play(){System.out.println("狗玩游戏");}}class ExtendsDemo{public static void main(String[] args){System.out.println("Extends ");//定义动物为狗Anamial a = new Dog();a.eat();//a.lookDoor(); 编译会报错,动物没有狗的方法//将动物还原成狗Dog d = (Dog)a;d.eat();d.lookDoor();        //a变成猫a = new Cat();a.eat();//a.play();  编译会报错,动物没有play方法//将动物还原为狗Cat c = (Cat)a;c.eat();c.play();//Dog dd = (Dog)a;  编译不会报错,运行报错 java.lang.ClassCastException: Cat cannot be cast to Dog//不能将毛转换成狗
        }
}

转载于:https://www.cnblogs.com/Jims2016/p/9495237.html

Java学习--多态相关推荐

  1. Java 学习多态笔记

    一. 多态同一个对象在不同时期表现的出不形态,要构成多态必须满足以下三个前提1.要有继承或实现2.有方法的重写3.有父类的引用指向对象eg:public class Animal {public St ...

  2. Java学习之 多态 Polymorphism

    Java学习之多态 多态的概念 多态==晚绑定. 不要把函数重载理解为多态. 因为多态是一种运行期的行为,不是编译期的行为. 多态:父类型的引用可以指向子类型的对象. 比如 Parent p = ne ...

  3. java学习笔记day09 final、多态、抽象类、接口

    java学习笔记day09 思维导图 final . 多态 . 抽象类 . 接口 (都很重要) 一.final 二.多态 多态中的成员访问特点⭐ [P237] 多态的好处 [P239] 多态的弊端 向 ...

  4. Java学习(9)(3种向上转型的方式、重写、向下转型、多态的优缺点、抽象类【基础规则、抽象类的作用】接口【基础规则、 接口的使用】)

    接上次博客:JAVA学习(8)继承 ( 继承的注意事项.Java的执行顺序.继承方式.限定词protcted.final关键词.多态.动态绑定和静态绑定 )_di-Dora的博客-CSDN博客 目录 ...

  5. 【Java学习笔记二】继承和多态

    与C++不同的是,在Java中,一个类只能直接继承另一个类,而不允许继承多个类,这个新类称为继承类.派生类或者子类,而被继承的类称为基类或者父类. 继承类能够继承基类的群不属性和行为. 面向对象程序设 ...

  6. 我的WEB之路(一)-2.JAVA学习路线

    第一阶段:针对性夯实JAVA基础 课程名称 核心要点 完成目标 Java基础入门 搭建Java开发和运行环境等,IDE工具的学习和使用,Java语言基础,数据类型,运算符,条件和循环,数组使用等,Ja ...

  7. 零基础Java学习之继承

    继承 继承的概述 继承的理解 继承的好处 继承的格式 继承的特点一:成员变量 私有化(private) 成员变量不重名 成员变量重名 继承的特点二:成员方法 成员方法不重名 成员方法重名--重写(Ov ...

  8. 深入Java核心 Java中多态的实现机制(1)

    在疯狂java中,多态是这样解释的: 多态:相同类型的变量,调用同一个方法时,呈现出多中不同的行为特征, 这就是多态. 加上下面的解释:(多态四小类:强制的,重载的,参数的和包含的) 同时, 还用人这 ...

  9. 初学者适用的最新Java学习路线

    目前,Java语言开发的就业前景相当明朗"钱"途一片大好,毕竟互联网企业对Java开发人才需求很旺盛.Java开发人才的薪资要比其他编程人才高出一大截,所以有很多朋友就都想来从事J ...

最新文章

  1. a*算法的时间复杂度_算法基础——时间复杂度amp;空间复杂度
  2. PHP过滤器 filter_has_var() 函数
  3. PTA L1_043 阅览室(详解坑点)
  4. MySQL读写分离事务策略实现
  5. c语言编译成功,[C/CPP系列知识] 那些程序C语言可以编译通过但C++无法编译成功 Write a C program that won’t compile in C++...
  6. Java 类的特性2
  7. selenium webdirver之ruby-开发ide安装
  8. ArcGIS实验教程——实验十八:叠置分析(Overlay Analysis)
  9. linux 安腾,时代谢幕:英特尔安腾IA-64的Linux内核支持已成孤儿
  10. _Linux学习手册(二)—文件目录类命令
  11. 正则表达式驼峰标示转下划线
  12. SAS学习笔记(一)如何安装SAS
  13. RS232(串口线)转RJ45(网线)
  14. 新注册企业调查显示:近9成初创小微企业融资难
  15. 【ubuntu】Ubuntu 安装中文输入法
  16. 无法上网dns转发_公共DNS服务114.114.114.114已恢复正常
  17. 大数据培训技术logstsh filter
  18. 和疫情赛跑 30 天,湖北武汉的程序员们怎么样了?
  19. 中国定向公开赛海南昌江站开赛 600余名选手穿越雨林
  20. 30天自制操作系统:第十天 叠加处理

热门文章

  1. ASCII码八、十、十六进制对照表
  2. 2016年第七届蓝桥杯 - 国赛 - C/C++大学B组 - D. 机器人塔
  3. PAT (Basic Level) Practice (中文)1010 一元多项式求导 (25 分)
  4. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1052:计算邮资
  5. 【机器视觉】 return算子
  6. linux xps 13 wifi,XPS13-9350安装linux以及网卡连接失败修复的临时方案
  7. 关于逆元的概念、用途和可行性的思考(附51nod 1013 和 51nod 1256)
  8. 1015 德才论 (25 分)(c语言)
  9. RK1109 RK1126等芯片来袭,2020年瑞芯微旗下SoC一览
  10. 目标和—leetcode494