Java 多态 代码

Java中多态的实现方式:接口实现,继承父类进行方法重写,同一个类中进行方法重载。

看代码:

package com.company;

public class Main {

    public static void main(String[] args) {
        A a1 = new A();
        A a2 = new B();
        B b = new B();
        C c = new C();
        D d = new D();
        System.out.println(a1.show(b));
        System.out.println(a1.show(c));
        System.out.println(a1.show(d));
        System.out.println(a2.show(b));
        System.out.println(a2.show(c));
        System.out.println(a2.show(d));
        System.out.println(b.show(b));
        System.out.println(b.show(c));
        System.out.println(b.show(d));
    }

}

class A {
    public String show(D obj) {
        return ("A and D");
    }

    public String show(A obj) {
        return ("A and A");
    }
}

class B extends A {
    public String show(B obj) {
        return ("B and B");
    }

    public String show(A obj) {
        return ("B and A");
    }
}

class C extends B {
}

class D extends B {
}

http://www.cnblogs.com/jack204/archive/2012/10/29/2745150.html

时间: 2024-10-25 22:11:31

Java 多态 代码的相关文章

Java多态——代码复用性

Java中,多态的意为相同的行为,不同的实现. 其中,多态又分为静态多态和动态多态.两者的区别在于:前者在编译器就可以确定运行期的最终结果,即编译时就可以确定调用哪个方法:而后者在编译期则不能确定运行效果,只有运行后,依据所绑定对象的的不同,才能确定运行效果,即运行中系统才能确定方法所指的对象.静态多态主要体现在方法的重载和单独使用方法重写上,而动态多态体现为动态绑定和方法的重写上. 引入动态绑定的概念之前,需要先了解转型技术.转型即数据类型的转换,通常发生在赋值符号左右两边数据类型不同的时候.

java多态讲解

JAVA多态 一.相关的类结构 class A ...{ //create by danielinbiti public String show(D obj)...{ return ("A and D"); } public String show(A obj)...{ return ("A and A"); } } class B extends A...{ public String show(B obj)...{ return ("B and B&q

Java 多态(动态绑定)

Java 多态(动态绑定) @author ixenos 绑定 将一个方法的调用和一个方法的主体关联起来,称作(方法调用)绑定: 1.前期绑定:在程序执行前绑定(由编译器和连接程序实现): 2.后期绑定:在运行时根据对象的类型绑定(也称动态绑定或运行时绑定): a) 实现条件:能在运行时判断对象的类型,从而关联对应主体,调用其方法 b) 编译器一直不知道真实对象类型,只将其认作引用变量的类型且知道有继承关系 c) Java中除了static方法和final方法(private方法属于final方

C#与Java多态方面的语法差异

C#与Java多态方面的语法差异 2016-11-29 Java代码: public static void main(String[] args) { Mother mother=new Mother(); mother.showName(); Mother human=new Son(); human.showName(); Son sona=new Son(); sona.showName(); } public class Mother { public void showName(){

Java多态对象的类型转换和动态绑定

Java多态对象的类型转换这里所说的对象类型转换,是指存在继承关系的对象,不是任意类型的对象.当对不存在继承关系的对象进行强制类型转换时,java 运行时将抛出 java.lang.ClassCastException 异常. 在继承链中,我们将子类向父类转换称为"向上转型",将父类向子类转换称为"向下转型". 很多时候,我们会将变量定义为父类的类型,却引用子类的对象,这个过程就是向上转型.程序运行时通过动态绑定来实现对子类方法的调用,也就是多态性. 然而有些时候为

深入理解Java多态机制

从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令. invokestatic: 调用静态方法. invokespecial: 调用实例构造器<init>方法,私有方法和父类方法. invokevirtual: 调用所有的虚方法. invokeinterface: 调用接口方法,会在运行时再确定一个实现此接口的对象. invokedynamic: 调用动态方法.JDK 7引入的,主要是为了支持动态语言的方法调用. JVM提供了上述5条方法调用指令,所以不妨从字节码层面

java 多态与多重继承

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

JAVA 多态的一种实现

今天一个同事问我一个问题,就是关于子类,父类之间方法的调用这里的.这里我整理了一个小DEMO. 代码如下: 父类的代码: public abstract class ClassA { public final void execute() { System.out.println("A"); work(); } protected abstract void work(); } 这里,我个人理解,这里的execute()方法,好像用了设计模式中的命令模式. 子类代码: public c

Java 多态的特性和概念

多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作,如图所示: image 多态性是对象多种表现形式的体现. 现实中,比如我们按下 F1 键这个动作: 如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档:如果当前在 Word 下弹出的就是 Word 帮助:在 Windows 下弹出的就是 Windows 帮助和支持.同一个事件发生在不同的对象上会产生不同的结果. 多态的优点 消除类型之间的耦合关系 可替换性 可扩充性 接口性 灵活性