欢迎来到天天文库
浏览记录
ID:40566204
大小:30.50 KB
页数:2页
时间:2019-08-04
《Java的动态绑定》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java的动态绑定机制Java的动态绑定又称为运行时绑定。意思就是说,程序会在运行的时候自动选择调用哪儿个方法。一、动态绑定的过程: 例子:1publicclassSonextendsFather2Sonson=newSon();3son.method();1.首先,编译器根据对象的声明类型和方法名,搜索相应类(Son)及其父类(Father)的“方法表”,找出所有访问属性为public的method方法。可能存在多个方法名为method的方法,只是参数类型或数量不同。2.然后,根据方法的“签名”找出完全匹配的方法。方法的名称和参数列表称为方法的签名。 在JavaSE5.0以前的版
2、本中,覆盖父类的方法时,要求返回类型必须是一样的。现在子类覆盖父类的方法时,允许其返回类型定义为原始类型的子类型。1publicFathergetFather(){...}//父类中的方法2publicSongetFather(){...}//子类覆盖父类中的getFather()方法3.如果是private、static、final方法或者是构造器,则编译器明确地知道要调用哪儿个方法,这种调用方式成为“静态调用”。4.调用方法。如果子类Son中定义了method()的方法,则直接调用子类中的相应方法;如果子类Son中没有定义相应的方法,则到其父类中寻找method()方法。二、Dem
3、o1.子类重写父类中的方法,调用子类中的方法1publicclassFather{2publicvoidmethod(){3System.out.println("父类方法:"+this.getClass());4}5}6publicclassSonextendsFather{7publicvoidmethod(){8System.out.println("子类方法"+this.getClass());9}10publicstaticvoidmain(String[]args){11Fatherinstance=newSon();12instance.method();13}14}15
4、//结果:子类方法:classSon2.子类没有重写父类中的方法,所以到父类中寻找相应的方法publicclassFather{publicvoidmethod(){System.out.println("父类方法:"+this.getClass());}}publicclassSonextendsFather{publicstaticvoidmain(String[]args){Fatherinstance=newSon();instance.method();}}//结果:父类方法:classSon三、动态绑定只是针对对象的方法,对于属性无效。因为属性不能被重写。1publiccl
5、assFather{2publicStringname="父亲属性";3}4publicclassSonextendsFather{5publicStringname="孩子属性";67publicstaticvoidmain(String[]args){8Fatherinstance=newSon();9System.out.println(instance.name);10}11}12//结果:父亲属性
此文档下载收益归作者所有