zoukankan      html  css  js  c++  java
  • 黑马程序猿-面向对象-多态

    ---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
    
    一多态的前提:(1)要有继承关系(或者实现关系)
               (2)方法的重写
    		   (3)父类的引用指向了自己子类的对象
    
    
    class Fu
    {
    	public void show()
    	{
    		System.out.println("fu show");
    	}
    }
    
    class Zi extends Fu
    {
    	public void show()
    	{
    		System.out.println("zi show");
    	}
    }
    
    class Day02
    {
    	public static void main(String[] args)
    	{
    		Fu f = new Zi();
    		f.show();
    	}
    }
    
    
    二多态间编译成员的特点:
                    (1)成员变量:编译看左边,执行看左边
    				(2)成员函数:编译看左边,执行看右边
    class Fu
    {
    	public int num = 10;
    	public void show()
    	{
    		
    		System.out.println("fu show");
    	}
    }
    
    class Zi extends Fu
    {
    	public int num = 20;
    	public void show()
    	{
    		System.out.println("zi show");
    	}
    }
    
    class Day02
    {
    	public static void main(String[] args)
    	{
    		Fu f = new Zi();
    		//编译看左边(fu中的show方法)
    		//执行看右边(zi中的show方法)
    		f.show();
    
    		//编译和执行都看左边的(fu中的num)
             System.out.println(f.num);
    	}
    }
    
    
    三.多态中的向上转型和向下转型
    (1)向上转型:小转大
    (2)向下转型:大转小
       向下转型是为了用到子类里的特有方法
    
       注解:建立子类对象,调用子类的特有方法也能够,可是假设这样做
            内存中就有了两个子类的对象,效率低,不利于节省内存空间
    
    class Fu
    {
    	public void show()
    	{
    		System.out.println("fu show");
    	}
    }
    
    class Zi extends Fu
    {
    	public void show()
    	{
    		System.out.println("zi show");
    	}
    	public void method()
    	{
    		System.out.println("zi method");
    	}
    }
    
    class Day02
    {
    	public static void main(String[] args)
    	{
    		Fu f = new Zi();//向上转型
    		f.show();//zi show
    		Zi z = (Zi)f;//向下转型
    		z.method();
    	}
    }
    
    
    四.多态的定义&弊端&优点
    定义:对象在不同一时候刻表现出来的不同状态
    弊端:父类的引用不能使用子类的特有功能
    优点:提高了代码的扩展性和可维护性
    
    

  • 相关阅读:
    tsql导出EXCEL语句待测试
    IE和Firefox下event乱谈
    cf 167.d( 多重集全排列 )
    poj 1815(最小割 + 枚举)
    Codeforces Round #167 (Div. 2)
    poj 3308(最小割+对数处理)
    在FootTemplate与ItemTemplate中间扩展Repeater模板
    在没有高度设定的情况下让margintop生效
    float:left后整体居中
    判断ExecuteScalar()是否返回结果
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/3764582.html
Copyright © 2011-2022 走看看