zoukankan      html  css  js  c++  java
  • 巩固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
    	}
           
           
    }
    

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

  • 相关阅读:
    Typekit在线字库及使用方法
    SVG基础图形和D3.js
    CSS3 媒体查询@media 查询(响应式布局)
    Bootstrap 栅格系统(布局)
    CSS——图片替换方法:Fahrner图片替换法(FIR)
    CSS sprites(css 精灵):将小图标整合到一张图片上
    [html]点击button后画面被刷新原因:未设置type="button"
    [java]No qualifying bean of type 解决方法
    [eclipse]eclipse设置条件断点Breakpoint Properties
    Intent的setFlag和addFlag有什么区别?
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4931760.html
Copyright © 2011-2022 走看看