1. 多态的概念

Java中面向对象有三大特性:封装、继承和多态。
        Java中的多态是什么,表现在哪里?
        允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是函数调用)多态要有动态绑定,否则就不是多态。多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。

2. 多态存在的三个必要条件 

1.要有继承;
        2.要有方法的重写;
        3.父类引用指向子类对象(对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接)。
        例:Animal animal = new Cat();

3. 多态的使用--方法的多态

方法的重写Overriding和重载Overloading是Java 多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。

案例一:

class Person {public void eat () {System.out.println("吃饭");}public void eat (String food) {System.out.println("吃" + food);}
}
class Man extends Person {@Overridepublic void eat() {System.out.println("吃零食");}@Overridepublic void eat(String food) {System.out.println("吃"+ food);}
}

这个简单的案例使用了方法的重载和方法的重写分别体现了多态。

 4. 多态的使用--对象的多态

一个对象的编译类型和运行类型是不一样。编译类型是在定义对象的时候,就已经确定好的
而运行类型是可以改变的。编译类型看 = 的左边 ,运行类型看 = 的右边。
       例: Person person = new Person();
               Person person就是编译类型,new Person()就是运行类型。

案例二: 

package com.lmz.day03;class Animal {public void run() {System.out.println("动物在跑");}
}
class Dog extends Animal {@Overridepublic void run() {System.out.println("狗跑的快");}public void eat() {// 自己独有的方法System.out.println("狗啃骨头");}
}
class Cat extends Animal {@Overridepublic void run() {System.out.println("猫跑的满");}public void cry() {// 自己独有的方法System.out.println("喵喵喵");}
}
public class Test {public static void main(String[] args) {Animal animal1 = new Dog();// 父类的引用指向子类的对象animal1.run();//animal1.eat();// 编译错误// 因为父类的引用是指向不了子类独有的方法的,意味着父类的引用不能调用子类独有的方法Animal animal2 =  new Cat();animal2.run();//animal2.sleep();}}

5. 多态的优点 

可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对动物Animal 类工作,对其他任何动物猫,狗,兔子也同样工作。
        可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态
性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。

6. 拓展--向上转型和向下转型 

 6.1 多态的向上转型

本质:父类的引用指向子类对象;
 语法格式:

父类类型  父类引用 =  new  子类类型();

将子类的对象赋值给了父类的引用。小范围(子类) 转为大范围(父类)自动转型;
        父类的引用可以调用父类的所有成员方法,可以调用子类的重写父类的方法,但是不能调用子类独有的方法。

  6.2 多态的向下转型 

本质:先将父类引用指向子类对象,再将父类引用赋值给子类引用(需要强转);
语法格式:

父类类型 父类引用 = new  子类();
子类类型 子类引用 = (子类类型)父类的引用; 

Java多态的概念、优点和用法相关推荐

  1. Java:多态的概念和案例实现

    一.多态的概念 多态性是指同一个操作作用于某一类对象,可有不同的解释,产生不同的执行结果 多态存在的三个必要条件         需要存在继承或实现关系         同样的方法调用而执行不同的操作 ...

  2. java多态的概念_java中多态是什么?概念详解

    对于java中的多态你是怎样理解的呢?很多人表示,自己对于多态的概念不是很清楚,那么下面就让我们一起来详细的了解一下吧. 1.什么是多态? 多态简单的来说就是一种事物的多种存在形态. 在面向对象语言当 ...

  3. Java多态的概念及简单实现

    1.多态 1.1.概念 多态性是指同一个操作用于某一对象,可以有不同的解释,产生不同的执行结果 1.2.多态存在的三个必要条件 (1)需要存在继承和实现关系 (2)同样的方法调用而执行不同操作.运行不 ...

  4. java多态(java多态的概念)

    简述什么是JAVA中的多态 父类的引用可以引用子类的对象.换句话说,如果有一个类继承或实现了某个类或接口,那么被继承或实现的类或接口可以创建那一个类的对象,这样程序就会变得很灵活. java中多态的定 ...

  5. java多态的概念_Java基本概念:多态

    一.简介 描述: 多态性是面向对象编程中的一个重要特性,主要是用来实现动态联编的.换句话说,就是程序的最终状态只有在执行过程中才被决定,而非在编译期间就决定了.这对于大型系统来说能提高系统的灵活性和扩 ...

  6. java多态的概念_java中多态概念、实现原理详解

    一.什么是多态? 1.多态的定义 指允许不同类的对象对同一消息做出响应.即同一消息可以根据发送对象的不同而采用多种不同的行为方式(发送消息就是函数调用) 2.多态的作用 消除类型之间的耦合关系 3.多 ...

  7. 新手福利——理解java多态的概念和作用

    多态是面向对象的重要特性,简单点说:"一个接口,多种实现",就是同一种事物表现出的多种形态. 编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物 ...

  8. 什么是Java多态?如何实现Java多态?

    java多态这个概念在同学们深入学习java的时候就会被提出,很多同学并不知道是什么意思,如何实现.今天小千就来给大家介绍一下什么是java多态和java如何实现多态. 什么是多态? 指允许不同类的对 ...

  9. java 多态_Java 多态

    Java多态,在之前的向上转型的文章中已经介绍了使用场景和为什么要通过向上转型实现运行时多态,请先看文章:张舰:Java 向上转型和向下转型 这篇文章主要是总结一下Java多态的概念,具体的例子请参考 ...

最新文章

  1. 微型计算机系统外文,微型计算机控系统(单片机控制系统) 毕业论文外文翻译.doc...
  2. 经典mysql 语句收录
  3. amazeui学习笔记--css(HTML元素2)--代码Code
  4. Java的内存--存储
  5. Source code for Bayesian based CS and blind debluring
  6. SAP Fiori Elements - smart filter bar study - filter display logic
  7. 编译原理预测分析程序
  8. AjaxControlToolkit AjaxFileUpload 为英文的解决办法
  9. pythonmulti函数_python – 用于使用MultiIndex创建pandas系列的语法糖
  10. [学习笔记] JavaScript 检测数组
  11. cygwin boost
  12. python end用法_8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)
  13. 一个屌丝程序猿的人生(一百零九)
  14. php x forwarded for,代码审计树洞X_FORWARDED_FOR注入
  15. 九度OJ 1538 GrassLand密码
  16. nodejs调用SendCloud邮件API2.0
  17. FX5u plc 如何实现网络远程通讯
  18. python深度学习include框架_搞事情。《用Python实现深度学习框架》已出版上架。...
  19. 光照相关 shader
  20. Spring相关的配置

热门文章

  1. 免费分享我的C++版多线程邮件地址采集器 1.0 大小230K 无需安装,纯绿色版
  2. js实战 网页五子棋进阶版
  3. 【HDOJ】4768 Flyer_天涯浪子_新浪博客
  4. 项目验收汇报ppt_项目汇报ppt制作公司
  5. 乌镇现场 | 脸书副总裁:Facebook上的内容可以自动翻译
  6. hp2548无线服务器地址,扫清连接障碍 惠普解决移动打印机难题
  7. 怎样才能让百度搜索到自己的csdn博客
  8. UI设计中switch开关设计总结
  9. MyMac M1/Mac/Win Config配置记录---kalrry
  10. 信息技术用计算机写字的教案,黔教版信息技术三年级下册第9课《用计算机写字》教案1.doc...