A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黄奕豪 于 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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马