java--动态单分派,静态多分派

来源:互联网 发布:vb语言好学吗 编辑:程序博客网 时间:2024/05/29 11:56
package com.xiuye.test;import java.io.Serializable;public class TestOverload {static abstract class A {}static class B extends A {}static class C extends A {}public void f(A a) {System.out.println("AAAAAAA");}public void f(B a) {System.out.println("BBBBBBB");}public void f(C a) {System.out.println("CCCCCCC");}public static void main(String[] args) {TestOverload l = new TestOverload();// l.f(new A());//l.f(new B());//l.f(new C());//动态单分派,静态多分派//关键在引用类型A a = new B();l.f(a);a = new C();l.f(a);say('a');}/** * 依次注释1~9, say('a')会依次向上转型输出, * char->int->long->float->double->Character->Serializable->Object->char... *  * @param obj */// 8public static void say(Object obj) {System.out.println("Object");}// 1public static void say(char obj) {System.out.println("char");}// 2public static void say(int obj) {System.out.println("int");}// 3public static void say(long obj) {System.out.println("long");}// 4public static void say(float obj) {System.out.println("float");}// 5public static void say(double obj) {System.out.println("double");}// 6public static void say(Character obj) {System.out.println("Character");}// 7public static void say(Serializable obj) {System.out.println("Serializable");}// 9public static void say(char... obj) {System.out.println("char...");}}

AAAAAAAAAAAAAAchar

0 0
原创粉丝点击