JAVA中的多态

原创 2018年04月16日 16:31:24

多态的优点

1. 消除类型之间的耦合关系
2. 可替换性
3. 可扩充性
4. 接口性
5. 灵活性
6. 简化性

多态存在的三个必要条件

继承

重写

父类引用指向子类的对象



public class Test {
    public static void main(String[] args) {
      show(new Cat());  // 以 Cat 对象调用 show 方法
      show(new Dog());  // 以 Dog 对象调用 show 方法
                
      Animal a = new Cat();  // 向上转型  
      a.eat();               // 调用的是 Cat 的 eat
      Cat c = (Cat)a;        // 向下转型  
      c.work();        // 调用的是 Cat 的 work
  }  
            
    public static void show(Animal a)  {
      a.eat();  
        // 类型判断
        if (a instanceof Cat)  {  // 猫做的事情 
            Cat c = (Cat)a;  
            c.work();  
        } else if (a instanceof Dog) { // 狗做的事情 
            Dog c = (Dog)a;  
            c.work();  
        }  
    }  
}
 
abstract class Animal {  
    abstract void eat();  
}  
  
class Cat extends Animal {  
    public void eat() {  
        System.out.println("吃鱼");  
    }  
    public void work() {  
        System.out.println("抓老鼠");  
    }  
}  
  
class Dog extends Animal {  
    public void eat() {  
        System.out.println("吃骨头");  
    }  
    public void work() {  
        System.out.println("看家");  
    }  
}

输出结果


《赤壁》学习笔记(一)

早就听说《赤壁》游戏是在国产游戏中的先驱,后来听说销售情况不是很好,干脆就把源码卖了,也就是业内人士常说的《G档案》。我费尽千辛万苦,在网上下载到了源码和标准版的游戏执行档。  分析了CBMain.C...
  • ysb
  • ysb
  • 2002-07-06 23:29:00
  • 1647

java中的对于多态的理解

面向对象:      类:具体的对象抽象而来,可以抽象的表示一类具有相同特征和行为的对象      对象:是由类的实例化而来,对象是类的一个实例 java中关于多态的理解 打个比方 父...
  • woshiermingerming
  • woshiermingerming
  • 2016-08-26 08:29:54
  • 14392

java中多态的this指向问题

存在多态的条件,满足3个条件,1.要有继承2.要有重写方法,3父类引用子类对象eg:上面的Servlet s = new MyServlet();。满足多态this指向最终MyServlet类的对象。...
  • abc13526222160
  • abc13526222160
  • 2016-10-06 14:18:30
  • 468

Java 与 C++ 中的多态区别

Java 与 C++ 中的多态区别1.先看C++#include using namespace std; class Person{ public:int x=1,y=1; void Show(...
  • qq_33728573
  • qq_33728573
  • 2017-03-04 17:09:12
  • 673

java中多态以及python动态语言

java中的多态 1、什么是多态 java引用变量有两个类型,一个是编译时的类型,一个是运行时的类型,编译时的类型由声明该变量时使用的类型决定,运行时的编译类型由实际赋给该变量的对象决定。如果编译时类...
  • u014689510
  • u014689510
  • 2015-12-19 14:07:44
  • 528

python中多态与java中多态

python中多态  A function that can operate on more than one type. If all the operations in a function c...
  • bravekingzhang
  • bravekingzhang
  • 2014-02-17 14:32:37
  • 1434

理解java中的多态,多态的例子

当面临一个问题,有多种实现算途径的时候,要想到java中的核心:多态。 多态的思想: 概括地讲,在运用父类引用指向子类对象的情况下,基本上就用到了多态了。(当父类引用指向子类对象时,调...
  • angus_17
  • angus_17
  • 2011-10-16 21:04:52
  • 13287

简述java中两种实现多态的方法

重载和覆盖 重载和覆盖 重载和覆盖
  • mzd8341
  • mzd8341
  • 2017-05-06 17:03:19
  • 665

java中实现多态的机制是什么?

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

java中提供了哪两种多态的机制

java中提供了哪两种多态的机制 编译时多态和运行时多态。编译时多态是通过方法的重载实现的,运行时多态是通过方法的覆盖(子类覆盖父类方法)实现的。 注:函数不能以返回值来区分的,虽然两个函数有着不同...
  • yun18256076755
  • yun18256076755
  • 2015-01-21 15:16:14
  • 3664
收藏助手
不良信息举报
您举报文章:JAVA中的多态
举报原因:
原因补充:

(最多只允许输入30个字)