本帖最后由 黄奕豪 于 2012-5-9 19:25 编辑
Instanceof 类型判断
例子(a instanceof int)a是否是int类型
在多态中(Fu f=new Zi())
非静态成员函数的特点:
在编译时看Fu类,运行时看Zi类。
静态成员函数、成员变量的特点:
无论编译和执行都参照Zi类。
非静态成员函数跟静态成员函数为什么在多态时调用不一样?
答:因为静态成员函数在声明时进的是静态内存区,静态内存区用的是静态绑定的方法绑定函数,即调用函数时全名是类名点函数(Fu.method)而非静态成员函数是加载到动态内存区,采用的是动态绑定方法,调用函数时全名是this点函数(this.method),this就是当前定义和使用的是哪个类,就代表哪个类。
总之:静态方法一般不进行覆盖,想覆盖也覆盖不了!!
接口应用的加深理解:接口定义了规则,不同的类引用相同的接口,根据多态的特性,用接口来接收这些引用了这个接口的不同类的实例。提高了代码的复用性!也就是说引用了这个接口的类就是产品,可以随时进行开发,然后接入程序中使用!
例如如下代码(参照毕老师代码):
/*
这是一个加深接口应用和多态实现的例子,以主板为例
*/
class InterfaceUsedDemo
{
public static void main(String[] args)
{
MainBoard mb=new MainBoard();
mb.outTool(new NetCard());//用接口类接受实例!!
}
}
class MainBoard
{
public void run()
{
System.out.println("MainBroad run");
}
//接口多态应用的体现,用接口接收对引用了PciTool的类免去多次写代码,加入设备也不用改源码!
public void outTool(PciTool p)
{
p.run();
p.close();
}
}
//接口,接口类中的函数固定用public abstract修饰,少哪个补哪个!
interface PciTool
{
public void run();
public void close();
}
//定义网卡!!!!
class NetCard implements PciTool
{
public void run()
{
System.out.println("NetCard run");
}
public void close()
{
System.out.println("NetCard close");
}
}
//还可以定义其他Pci设备,只要引用了PciTool接口就可以插到PCI插口上!!
//比如定义声卡:class VoiceCard implements PciTool
//定义诊断卡:class DiagnosisCard implement
如有任何个人理解错,或者表达不清晰的!希望各路大侠敲键盘相助!!!3Q
|
|