JAVA 多态的一种实现

今天一个同事问我一个问题,就是关于子类,父类之间方法的调用这里的。这里我整理了一个小DEMO。

代码如下:

父类的代码:

public abstract class ClassA {

    public final void execute()
    {
        System.out.println("A");
        work();
    }

    protected  abstract  void work();

}

这里,我个人理解,这里的execute()方法,好像用了设计模式中的命令模式。

子类代码:

public class ClassB extends ClassA {
     public void work()
     {
         System.out.println("B is working");
     }
     //方便期间,这里写了一个主方法
     public static void main(String[] args) {
        new ClassB().execute();
    }
}

NEW了一个B类,执行EXECUTE方法,其实这个是执行从父类继承来的,所有子类这个方法都是一样的。在EXECUTE方法中,会调用WORK方法,而这个方法就会调用本类中的具体实现。

本人JAVA学的不是很好,这种方法实现多态,感觉还是蛮有意思的。还用了设计模式。

调用者只需要知道执行execute方法,而不需要关心这个方法怎么实现的。可以通过反射机制,在运行时去执行。这样,大大的降低了模块间的耦合度。

今天又学到了一个。挺好!

2014.7.20

JAVA 多态的一种实现

时间: 2024-10-27 18:40:39

JAVA 多态的一种实现的相关文章

java多态的2种表现形式 方法重载和方法覆盖

方法重载:同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载. 方法覆盖:子类重新实现了父类中的方法. 1.方法的重载实例(Overload) 指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法, 然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行 /** * 方法重载满足的条件 * 1.同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载 * 2.参数列表不同指参数的类型,参数的个数,参数的顺序至少一项不同 * 3.方法的返回值类型

由一道题目引出的java多态

某次逛论坛时发现一个非常有意思的题目,如下: class A<B> { public String show(A obj) { return ("A and A"); } public String show(B obj) { return ("A and B"); } } class B extends A { public String show(B obj) { return ("B and B"); } public Stri

Java多态-继承与清理

通过组合和继承方法来创建新类时,永远不必担心对象的清理问题,子对象通常会留给垃圾回收器进行处理.如果确是遇到清理问题,那必须用心为新的类创建dispose()方法(在这里我们选用此名).并且由于继承的缘故,如果我们有其他作为垃圾回收一部分的特殊清理动作,就必须在导出类中覆盖被继承的dispose()方法.当覆盖被继承的diopose()方法时,务必记住调用基类版本dispose()方法:否则,基类的清理动作就不会发生.下例便是一个证明: package polymorphism; class C

JAVA多态学习1

多态–概念 所谓多态.就是指一个引用(类型)在不同情况下的多种状态. 也能够理解成:多态是指通过指向父类的指针,来调用在不同子类中实现的方法. 实现多态有两种方式:1.继承.2.接口 这一次我们先来演示一下: 继承.方法覆盖.多态以及向上转型的内容 package polimorphic; public class Polimorphic { public static void main(String[] args) { //非多态演示 System.out.println("非多态演示:&q

java 多态与多重继承

/** * java 中的每一中操作,操作的数据类型必须合法.父类有的方法子类都有 * 凡是能够使用父类生成对象的地方都可以使用子类生成对象. * * 多态性 * 是指允许不同类的对象对同一消息作出响应. * 多态性包括参数化多态性和包含多态性.多态性语言具有灵活. * 抽象.行为共享.代码共享的优势,很好的解决了应用程序函数同名问题. * 多态有两种表现形式:重载和覆盖 * 首先说重载(overload),是发生在同一类中.与什么父类子类.继承毫无关系. * 标识一个函数除了函数名外,还有函数

JAVA——多态和抽象

多态和抽象从继承引出来的两个重要的概念,多态允许以多种形式存在,而抽象则允许创建抽象类. 在Java中,多态有两种理解方式:第一种是对象的不同的方法可以用相同的一个方法名,也就是重载的概念.另一种是同一对象根据不同的消息执行相应的行为,也可以这样认为发送消息给某一对象,让对象自行选择哪种相应的行为.根据这两种方式,所以多态分为静态多态和动态多态: ■静态多态指的是程序在编译时,系统就能决定调用哪个方法,所以也称为编译时多态.在Java中,静态多态实现的方法就是方法重载,其调用规则是依据对象在定义

java多态在类,父子间的表现

运行时多态 运行时多态性是面向对象程序设计代码重用的一个最强大机制,Java多态性的概念也可以被说成“一个接口,多个方法”.Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制. 方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类之间多态性的一种 表现,重载Overloading是一个类中多态性的一种表现. 如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Ov

Java多态的底层原理

作为一门面向对象语言,Java 拥有封装.继承.多态三大特性.多态就是允许不同类的对象对同一消息做出响应.基于多态,可以消除一些类型耦合关系,实现可替换.可扩充.Java 中使用多态特性的方法主要有,实现一个接口,实现抽象类的一个方法,覆盖父类的一个方法. Java多态的底层原理 多态的底层实现是动态绑定,即在运行时才把方法调用与方法实现关联起来.动态绑定涉及很多 JVM 的细节,全部写清楚需要很大篇幅,因此本文仅简单描述,后续会有其他文章就其中的细节一一分享. 静态绑定与动态绑定 JVM 的方

Java多态之动态绑定

目录 Java多态之动态绑定 引用变量的类型 编译时类型 运行时类型 方法绑定 静态绑定 动态绑定 方法表 Java多态之动态绑定 上篇回顾:多态是面向对象程序设计非常重要的特性,它让程序拥有 更好的可读性和可扩展性. 发生在继承关系中. 需要子类重写父类的方法. 父类类型的引用指向子类类型的对象. 自始至终,多态都是对于方法而言,对于类中的成员变量,没有多态的说法. 上篇说到:一个基类的引用变量接收不同子类的对象将会调用子类对应的方法,这其实就是动态绑定的过程.在理解动态绑定之前,先补充一些概