搜索
首页 电脑/网络 程序设计 JAVA相关

binding在Java中得具体作用?

binding在Java中得具体作用?是什么意思?有什么作用?

全部回答

2019-06-19

0 0

    在Java中,父类与子类之间的类型转换有两种,一种是子类向上转型父类(这永远是安全的),另一种是父类向下转型为子类(这得由相应的instanceof来判断数据类型,同时这也是一种不安全的转换)Base class 与derived class 之间,为了达到从一个特定类型转为一个通用类型(有点多态的味道),可以借助向上]转型这一工具(即子类向上转为父类类型的),因为Java里的对象引用都是dynamic binding或者lated bindin或者runing time binding,缺点就是在向上转型的过程中会丢失了属于子类专用的方法;向下转型中用得最多的就是interface的运用。
    下面用一段代码讲示: class Base{ public void baseMethod() {  System。out。println("into Base#baseMethod"); } public void fuc() {   System。
    out。println("into Base#fuc"); } }class Child extends Base{ public void childMethod() {  System。
  out。println("into Child#childMethod"); } public void fuc() {  System。  out。
  println("into Child#fuc");   } }class CCChild extends Child{ public void ccchildMethod() {  System。
  out。println("into CCChild#ccchildMethod"); } public void fuc() {  System。  out。
  println("into CCChild#fuc");   } }class DChild extends CCChild{ public void dchildMethod() {  System。
  out。println("into DChild#dchildMethod"); } public void fuc() {  System。  out。
  println("into DChild#fuc");   } } public class DynamicBindingTest{ public static void main(String[]args) {  Base bs=new Child();  bs。
    fuc();//dynamic binding derived Child so call Child#fuc  // bs。childMethod();//error:this method has been lost when upcasting to base class Base     Base cbs=new CCChild();  cbs。
    fuc();  // bs。ccchildMethod();//error:this method has been lost when upcasting to base class Base  System。
  out。println("=================");  Child c=new Child();  CCChild ccc=new CCChild();  DChild dc=new DChild();  testCall(c);  testCall(ccc);  testCall(dc); } static void testCall(Base b) {  b。
    fuc(); } }控制台打印出来的结果into Child#fucinto CCChild#fuc================into Child#fucinto CCChild#fucinto DChild#fuc。
  

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
JAVA相关
程序设计
电脑装机
操作系统/系统故障
硬件
笔记本电脑
百度
互联网
反病毒
软件
程序设计
JAVA相关
数据库
C/C++
VB
C#/.NET
VC++
汇编语言
其他编程语言
JAVA相关
JAVA相关
举报
举报原因(必选):
取消确定举报