zoukankan      html  css  js  c++  java
  • 多态的两个小例子

    class A {
    	public String show(B 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");
    	}
    }
    public class Test2 {
    	public static void main(String[] args) {
    		A a2 = new B();  
    		System.out.println(a2.show(a2));//输出B and A
    		System.out.println(a2.getClass().getTypeName());//输出cn.bh.tt.B
    		/*总结:1.当A new出子类a2,a2的类型是B,所以调用show()方法时,会先在子类B里面找,
    		 * 如果找不到再去父类A里面找。
    		 * 2.最有意思的是a2调用了show(A obj)而不是show(B obj),应该是因为a2是由A new出来的所以在充当
    		 * 参数的时候会向上转型为A。
    		 * */
    	}
    }
    
    class A{
        public int i=7;//父类属性 i
        public A(){    //父类无参构造器
    		print();
    	}			   //父类方法print()
    	public void print(){ 
            System.out.print(i);
            System.out.println("父类方法");
    	}
    }
    public class Polymorphic2 extends A{
    	public int j=4;       //子类属性 j
    	public Polymorphic2(){ //子类无参构造器
            print();
    	}
    	public void print(){  //子类方法print
            System.out.println(j);
            System.out.println("子类方法");
    	}
    	public static void main(String[] args){
    		new Polymorphic2();
    		/*输出为0<br>4:子类先默认隐式调用父类构造器,由于print被子类重写,所以调用子类方法,但此时j是还没有初始化的,所以输出为0
    		*/
    	}
    }
    
  • 相关阅读:
    Spring学习总结[1]-入门
    MyBatis学习总结[5]-动态 SQL
    MyBatis学习总结[4]-ResultMap子元素
    MyBatis学习总结[3]-多表查询
    MyBatis学习总结[2]-接口式调用
    MyBatis学习总结[1]-入门
    Bootstrap table两种分页示例
    spring ioc原理(看完后大家可以自己写一个spring)
    Junit4单元测试
    数字转换为字母有多少种方式
  • 原文地址:https://www.cnblogs.com/bihanghang/p/9956897.html
Copyright © 2011-2022 走看看