java父类和子类_Java中父类与子类的转换问题

自己在自学安卓,学的过程中遇到了不少困难,从中意识到自己的java知识不够扎实而导致,为此分享一下自己的java知识,一来是巩固知识,二来是给一些也在学java的同学共享共享!

首先先看个例子:

classA {publicA() {

}

}class B extendsA {publicB() {super();

}

}

不难理解,上面定义了两个类,一个是类A,一个是有A派生而来的类B

在看下面的代码:

public classTestDemo {public static voidmain(String[] args) {

B b= newB();

A a= newA();

a = b;

}

}

这段代码也不难理解,父类要赋值给子类,这就好比,狗(子类)是动物(父类)一样。

接下来才是我要讲的重点:

public classTestDemo {public static voidmain(String[] args) {

B b= newB();

A a= newA();

b=(B) a;

}

}

这段代码在编译时期看不出有什么错误,但运行时却报错了:

Exception in thread "main" java.lang.ClassCastException: com.laowu.A cannot be cast to com.laowu.B

报错说:A类不能转换成B,这就好比:动物(父类)是狗(子类)一样,不合逻辑。

但是下面这段代码编译和运行都不会出错:

1 public classTestDemo {2

3 public static voidmain(String[] args) {4 B b = newB();5 A a = newB();6 b = (B) a;7 }8

9 }

这段代码也是我初学时很纳闷的地方,但仔细想想就理解了,先看第5行代码,父类A由子类B创建的,之后第6行代码,子类对象b由父类对象强制转换而来

这就好比,首先说明了这个动物对象是狗创建的,然后说这个动物就是狗,所以逻辑上没问题,实际上也没问题。

这是我第一次发博文,可能在布局上有很多不足之处,欢迎指出,在内容上也有不足或者错误的地方也欢迎指出,大家互相交流,才能更好地互相学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值