黑马程序员之笔记2--多态

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

    今天学习了Java多态的相关知识。知道了多态指的是事物的多种形态,在代码里体现在出现Fu f = new Zi();(其中Zi类继承Fu类)的情况。

    其中需要注意的是,多态成员函数(非静态)的特点:

    在编译时期:参阅引用型变量所属的类中是否有调用的方法。如果有,编译通过,如果没有编译失败。在运行时期:参阅对象所属的类中是否有调用的方法。也就是说如果Zi类中有覆写Fu类的成员函数,那么通过父类引用调用的是子类覆写之后的成员函数。如果调用子类特有的成员函数, 则不能通过编译。

     成员变量和静态方法的特点:
无论编译和运行都参考左边,也就是引用型变量所属的类。静态成员函数也如此。

这种情况在实际开发遇到的不多,因为静态成员一般不需要覆盖,成员变量也无需覆盖。

     接口也可以多态,接口型引用指向自己的子类,这种情况在实际开发中特别适用,大大提高了程序的可扩展性,下边就主板程序可扩展多种PCI卡的实例来说明:

public class Test {
//主程序这里通过调用mb.add()即可添加不同的PCI卡
	public static void main(String[] args) {
		MainBoard mb = new MainBoard();
		mb.run();
		mb.add(new SoundCard());
	}
}
public class MainBoard {
//主板类
	public void run(){
		System.out.println("MainBoard run..");
	}
	public void add(PCI pci){//这里的参数是PCI接口的引用,体现了多态性,凡是实现了PCI接口的对象都可以
		pci.start();
		pci.stop();
	}
}
public interface PCI {//PCI接口
	public void start();
	public void stop();
}
public class SoundCard implements PCI{

	@Override
	public void start() {
		System.out.println("SoundCard start..");
		
	}

	@Override
	public void stop() {
	System.out.println("SoundCard stop..");
	}

}
我总结了一下,在需要扩展的地方定义一个接口,该接口定义了此处的通用功能,接受此接口引用的参数。需要扩展的类实现该接口,并将此类对象传递给该接口的引用,即利用多态性优化了程序代码。

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值