1、多态概念

多态性是对象多种表现形式的体现。比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫、小狗、蜥蜴等等。那么我到宠物店说"请给我一只宠物",服务员给我小猫、小狗或者蜥蜴都可以,我们就说"宠物"这个对象就具备多态性。

java中的多态,就是指一个引用(类型)在不同情况下的多种状态。也可以理解成,多态是指通过指向父类的指针,来调用在不同子类中实现的方法。也可以理解为“一个接口,多个方法”。

实现多态有两种方式:1、继承;2、接口

案例一:

  1. 多态演示[Dome122.java]
  2. //演示继承、方法覆盖、多态
  3. public class Demo122 {
  4. public static void main(String[] args) {
  5. //非多态,创建对象,然后调用其方法
  6. Cat cat=new Cat();
  7. cat.cry();
  8. Dog dog=new Dog();
  9. dog.cry();
  10. //多态机制,可通过父类创建的对象调用子类的方法,即所谓的一个接口,多个方法
  11. Animal an=new Cat();
  12. an.cry();//显示猫猫叫
  13. an=new Dog();
  14. an.cry();//显示汪汪叫
  15. }
  16. }
  17. //动物类
  18. class Animal{
  19. String name;
  20. int age;
  21. //让外部的方法访问类内部(私有)的属性,需要将类内部的属性添加get和set方法
  1. public String getName() {
  2. return name;
  3. }
  4. public void setName(String name) {
  5. this.name = name;
  6. }
  7. public int getAge() {
  8. return age;
  9. }
  10. public void setAge(int age) {
  11. this.age = age;
  12. }
  13. //动物会叫
  14. public void cry(){
  15. System.out.println("不知道怎么叫");
  16. }
  17. }
  18. //创建Dog子类并继承Animal父类及覆盖cry方法
  19. class Dog extends Animal{
  20. //狗叫
  21. public void cry(){
  22. System.out.println("汪汪叫");
  23. }
  24. }
  25. class Cat extends Animal{
  26. //猫叫
  27. public void cry(){
  28. System.out.println("猫猫叫");
  29. }
  30. }

案例二:

  1. /*
  1. 多重多态演示[Dome123.java]
  2. */
  1. //演示子类继承父类、方法覆盖、多态方法
  2. public class Demo123 {
  3. public static void main(String[] args) {
  4. //非多态演示
  5. System.out.println("非多态演示:");
  6. Cat cat=new Cat();
  7. cat.cry();
  8. Dog dog=new Dog();
  9. dog.cry();
  10. System.out.println();
  11. //多态演示
  12. System.out.println("多态演示:");
  13. Animal an=new Cat();
  14. an.cry();
  15. an=new Dog();
  16. an.cry();
  17. System.out.println();
  18. //多重多态演示
  19. System.out.println("多重多态演示:");
  20. Master master=new Master();
  21. master.feed(new Dog(),new Bone());
  22. master.feed(new Cat(),new Fish());
  23. }
  24. }
  25. //主人类
  26. class Master{
  27. //给动物喂食物,使用多态,只要写一个方法
  28. public void feed(Animal an,Food f){
  29. an.eat();
  30. f.showName();
  31. }
  32. }
  33. //食物父类
  34. class Food{
  35. String name;
  36. public void showName(){
  37. System.out.println("食物");
  38. }
  39. }
  40. //食物鱼子类
  41. class Fish extends Food{
  42. public void showName(){
  43. System.out.println("鱼");
  44. }
  45. }
  46. //食物骨头子类
  47. class Bone extends Food{
  48. public void showName(){
  49. System.out.println("骨头");
  50. }
  51. }
  52. //动物类Animal父类
  53. class Animal{
  54. String name;
  55. int age;
  56.  
  57. public String getName() {
  58. return name;
  59. }
  60. public void setName(String name) {
  61. this.name = name;
  62. }
  63. public int getAge() {
  64. return age;
  65. }
  66. public void setAge(int age) {
  67. this.age = age;
  68. }
  69. //动物会叫
  70. public void cry(){
  71. System.out.println("不知道怎么叫");
  72. }
  73. //动物吃东西
  74. public void eat(){
  75. System.out.println("不知道吃什么");
  76. }
  77. }
  78. //创建Dog子类并extends继承Animal父类及覆盖cry方法
  79. class Dog extends Animal{
  80. //狗叫
  81. public void cry(){
  82. System.out.println("汪汪叫");
  83. }
  84. //狗吃东西
  85. public void eat(){
  86. System.out.println("狗爱吃骨头");
  87. }
  88. }
  89. class Cat extends Animal{
  90. //猫自己叫
  91. public void cry(){
  92. System.out.println("猫猫叫");
  93. }
  94. //猫吃东西
  95. public void eat(){
  96. System.out.println("猫爱吃鱼");
  97. }
  98. }

多态--注意事项:

1、java允许父类的引用变量引用它的子类的实例(对象)

  1. Animal an=new Cat();//这种转换时自动完成的

java面向对象编程(七)--四大特征之多态的更多相关文章

  1. java 面向对象编程。。。。

    经过一周的学习(java),总结了许多,对java的理解,java的类型,运用,安装,基础语法,变量,常量,表达式,语句 java从C语言中继承了大量语言特性.java面向对象编程的基本特征,包括继承 ...

  2. JAVA面向对象编程课程设计——网络版单机斗地主

    一.团队介绍 成员姓名 任务分配 成员课程设计博客链接 兰泽祥(组长) 数据库,斗地主规则的实现,人机自动出牌的算法,实体类的设计 JAVA面向对象编程课程设计--web版斗地主 吴修恩 JSP界面的 ...

  3. java面向对象(封装,继承,多态,抽象,接口的定义和实现)

    1.封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装.隐藏起来的方法. 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定 ...

  4. Python 面向对象编程的一些特征 及 单例模式的实现, 父类方法的调用(python2/python3)

    一.面向对象编程几个特征(封装, 继承,多态) 1.封装:类里面封装函数和变量, 在将类进行实例化成实例对象时进行传参, 从而生成不同的实例对象,增加代码的复用. 2.继承:子类可以继承父类的方法和属 ...

  5. JAVA面向对象编程课程设计——web版斗地主

    一.团队课程设计博客链接 JAVA面向对象编程课程设计--网络版单机斗地主 二.个人负责模块或任务说明 实体类的设计 斗地主规则的实现 人机自动出牌的算法 实现数据库的DAO模式 三.自己的代码提交记 ...

  6. JAVA学习(五):Java面向对象编程基础

    Java面向对象编程基础 面向对象(Object oriented programming,OOP)技术是一种强有力的软件开发方法,它採用数据抽象与信息隐藏技术,来使软件开发简单化,以达到代码重用的目 ...

  7. Java面向对象编程基础

    一.Java面向对象编程基础 1.什么是对象?Object 什么都是对象! 只要是客观存在的具体事物,都是对象(汽车.小强.事件.任务.按钮.字体) 2.为什么需要面向对象? 面向对象能够像分析现实生 ...

  8. 《Java面向对象编程》

    <Java面向对象编程> 第11章 对象的生命周期 11.1  创建对象的方式 用new语句创建对象 运用反射手段,调用java.lang.Class 或者 java.lang.Const ...

  9. java面向对象编程知识点总结

    一:今天完成 上午详细了解了java面向对象编程的一些细节,记录如下. 1)类 是一种引用类型,包含一个签名和一个主体,主体是放在花括号里面的成员,成员包括字段和方法,还有构造方法.初始化程序和嵌套类 ...

  10. Java面向对象编程(一)

    由于常常将Java和C++面向对象编程的原则搞乱,所以这次把相关要点分别总结一下,本文主要总结Java面向对象编程. 面向对象编程的三大特性是:继承性(inheritance), 多态性(polymo ...

随机推荐

  1. C#通过DocX创建word

    网上有一些基础的东西,但是比如插入图片,就没有找到方案,最终自己摸索出来的. 1.首先通过Nuget获取引用,关键字:“DocX” 2.示例代码 class Program { static void ...

  2. jieba库及词频统计

    import jieba txt = open("C:\\Users\\Administrator\\Desktop\\流浪地球.txt", "r", enco ...

  3. Effective java 系列之更优雅的关闭资源-try-with-resources

    背景: 在Java编程过程中,如果打开了外部资源(文件.数据库连接.网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们.因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制,如果我们不在 ...

  4. QT 右键弹出菜单

    QWidget及其子类都可有右键菜单 1.设置标志 在widget初始化的时候 setContextMenuPolicy(Qt::CustomContextMenu); 设置为自定义菜单模式 2.在需 ...

  5. JavaScript入门篇

    记录一下在慕课网学习JavaScript的过程. 以下内容均来自慕课网. 传送:https://www.imooc.com/code/401 为什么学习JavaScript 1. 所有主流浏览器都支持 ...

  6. .zip压缩版MySql的安装( )

    Mysql解压缩版下载安装过程 1.进入https://www.mysql.com/downloads/官网进行mysql的下载 找到downloads首页最下方MySQL Community Edi ...

  7. Linux中一个快速查找文件和目录的命令

    功能介绍: locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,值得注意的是:版本不同,会有所不 ...

  8. 与WCAG相关的一些学习心得

    1.什么是 WCAG? WCAG全称Web Content Accessibility Guidelines 网页内容无障碍浏览准则,简单的说就是为了方便残障人士(包括低视患者,盲人,聋人,学习障碍, ...

  9. freemarker导出word档

    1.word另存为xml:2.xml文件后缀名改成ftl:3.编写完整json字符串备用:4.修改ftl中动态字段为json中对应字段名:5.编写java代码自动生成word文件:(注意:换行用< ...

  10. 初识HT for web

    目前国内经济转型在潜移默化中已经发生了巨大的变化,保险,零售业,汽车等我能想到的. 只要互联网能插足的行业,都难逃一‘劫’. 刚看了一篇博客--基于 HTML5 的工业组态高炉炼铁 3D 大屏可视化 ...