• 巩固java(五)----通过实例理解java多态


    package duotai;
    class A{
    	public String show(){
    		return "A";
    	}
    }
    
    class B extends A{
    	
    	public String show(){
    		return "B";
    	}
    	public String onlyB(){
    		return "onlyB";
    	}
    	
    }
    
    class C extends B{
    	public String show(){
    		return "C";
    	}
    	
    	public String onlyC(){
    		return "onlyC";
    	}
    }
    
    class D{
    
    	public String show(String item){
    		return "D+"+item;
    	}
    	
    	public int show(int item){
    		return item;
    	}
    }
    
    
    public class Main {
           
    	public static void main(String[] args) {
    		A a = new A();
    		B b = new B();
    		C c = new C();
    		A ab = new B();  
    		A ac = new C();
    		B bc =new C();
    		/*
    		 * B是A的子类,C是B的子类,A中有方法show(),B和C都对其进行了重写。
    		 * 重写是父类与子类多态性的表现,子类的对象调用该方法将调用子类中的定义的此方法,父类中的此方法被屏蔽。
    		 * 1,2,3分别为A,B,C的对象调用该方法,所以返回结果分别为A,B,C
    		 * 
    		 */
    		//1
    		System.out.println("1:a.show()="+a.show());      //输出:1:a.show()=A
    		//2
    		System.out.println("2:b.show()="+b.show());      //输出:2:a.show()=B
    		//3
    		System.out.println("3:c.show()="+c.show());      //输出:3:a.show()=C
    		/*
    		 * 当超类通过声明的引用变量(称其为“对象的引用”其实更合适)调用其子类的对象时,它调用的方法必须是超类中拥有的子类的方法。
    		 *    4中变量ab是由A声明的,引用了B的对象,所以ab.show()调用的是B类中的show()方法;但是如果使用ab变量调用onlyB()
    		 * 是调不到的,因为超类中没有该方法。
    		 * 5,6同4
    		 * 
    		 */
    		//4
            System.out.println("4:ab.show()="+ab.show());    //输出:4:ab.show()=B
            //5
            System.out.println("5:ac.show()="+ac.show());    //输出:5:ac.show()=C
            //6
            System.out.println("6:bc.show()="+bc.show());    //输出:6:bc.show()=C
            
            /*
             * 在D中有两个show方法,但它们的参数和返回值不同,这是方法的重载。
             * 重载是一个类中多态性的一种表现,方法名相同,但参数的个数、类型,返回值至少有一个不同。
             * 
             */
            D d =new D();
            //7
            System.out.println("7:d.show(itemStr)="+d.show("dd"));   //7:d.show(itemStr)=D+dd
            //8
            System.out.println("8:d.show(itemInt)="+d.show(1));      //8:d.show(itemInt)=1
    	}
           
           
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Silverlight 4版本升级到4.0.60531.0
    Silverlight实例教程 理解Navigation导航框架Page类
    微软官方在线培训课程汇总2011版
    分享Silverlight/WPF/Windows Phone一周学习导读(07月11日07月17日)
    Linux内核简介
    Brief Summary of IaaS, PaaS, SaaS
    On Amazon EC2's Underlying Architecture
    Linux进程管理(2)
    一个诡异的时间问题追查[转]
    查看一个进程打开了哪些文件的命令
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4931760.html
Copyright © 2020-2023  润新知