向上转型:

可以将子类对象看作是父类对象叫做“向上转型”,由于向上转型是从一个较为具体的类向较为抽象的类的转换,所以它总是安全的。

例如:可以将正方形、长方形叫做是四边形,但是不能说四边形是正方形或长方形。

向下转型:

向下转型可以从向上转型推出,是由子类对象向父类方向上的转型,这样的转型通常是会出问题的,就好比说,你可以说麻雀是鸟类,但是你不能说所有的鸟类都是麻雀,这是非常不符合逻辑的,所以在直接将父类对象赋给子类时会产生编译报错,因为父类对象不一定是子类的实例。

所以在做向下转型时,需要告知编译器,这个父类对象就是子类对象,即强制的将父类对象转换成某个子类对象,这样的转型方式称为向下转型;

例如:

Parent p = new Parent();

Child c = (Chile)p;

但是在程序执行向下转型时,如果父类不是子类对象的实例,就会发生ClassCastException异常,所以在执行向下转型之前应该养成一个好的习惯,就是用instanceof关键字来判断父类对象是否是子类对象的实例,

instanceof语法如下:

myobject instanceof ParentClass

if(p instanceof c){

  Child c = (Chile)p;

  }else{

  //doSomeThing.....

}

最新文章

  1. 7.openssl enc
  2. BZOJ2038 小z的袜子
  3. C结构体中数据的内存对齐问题
  4. js图片放大镜
  5. linux 命令小结
  6. java中接口的定义与实现
  7. C++运用SDK截屏
  8. STL 源代码剖析 算法 stl_algo.h -- equal_range
  9. C语言数据结构----递归的应用(八皇后问题的具体流程)
  10. Junit4学习(五)Junit4测试套件
  11. bzoj 3712: [PA2014]Fiolki
  12. socket.io笔记
  13. ubus socket always in connecting status
  14. 避免jquery的click多次绑定方法
  15. DRF的视图和路由
  16. nodejs发送http请求
  17. springmvc 孔浩
  18. 使用ZBar来读取条形码和二维码的方法
  19. C#连接EXCEL和ACCESS字符串2003及2007版
  20. 看github上有18万star的第一开源项目如何教你学前端编程的

热门文章

  1. Sqlite基本命令集合(linux/fedora/ubuntu)
  2. Android自定义日历控件(继承系统控件实现)
  3. TextView 限制最大行数、最小行数、字数超过“...”表示
  4. dfs___刷题记录
  5. iOS9 & Xcode7 下设置LaunchImage启动图片 问题及解决
  6. C# 正则表达式大全(转载)
  7. leetcode525. 连续数组 python
  8. Python笔记25-----------创建二维列表【浅copy】和转置
  9. Android 开发者必知的开发资源
  10. 定位前后端bug