码迷,mamicode.com
首页 > 其他好文 > 详细

黑马程序员-面向对象-多态

时间:2014-06-03 01:53:45      阅读:199      评论:0      收藏:0      [点我收藏+]

标签: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();
	}
}


四.多态的定义&弊端&好处
定义:对象在不同时刻表现出来的不同状态
弊端:父类的引用不能使用子类的特有功能
好处:提高了代码的扩展性和可维护性


黑马程序员-面向对象-多态,布布扣,bubuko.com

黑马程序员-面向对象-多态

标签:java   黑马程序员   面向对象   

原文地址:http://blog.csdn.net/u014005316/article/details/27572641

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!