向下转型的使用

示例(强制转换):

Person p2= new Man();
Man m2=(Man)p2;

强制转换的分析:
地址有两部分:类型+@+具体地址
m1和p2的类型不同,@和具体地址相同,由于m1是Man类型,所以可以调用子类的属性和方法

但强制类型转换有时会出问题

Person p2= new Man();
Woman m2=(Woman)p2;

这样会出现ClassCastException异常

instanceof关键字

a instance of A判断对象a是否是A的实例,如果是,返回true,否则返回false。

if(p2 instanceof Woman){Woman w1=(Woman)p2;w1.goShopping();System.out.println("woman");
}

这样就能避免强制类型转换出现的异常了。

  1. 如果B是A的父类,则a instance of A返回true,则a instance of B也返回true。
  2. 不相关的两个类不能强转
  3. 向下转型用的很少

“==”对于引用数据类型来讲,比较的是引用数据类型的地址值是否相同

ps:
1.若子类重写了父类的方法,就意味着子类的方法彻底覆盖了父类的方法,系统不可能把父类的方法转移到子类中
2.若子类和父类有重名的实例变量,子类的实例变量也不可能覆盖父类的实例变量,编译运行都看左边

Object类的使用

  1. Object类是所有类的根父类
  2. 如果类的声明中没有用extend关键字,则默认它的父类是Object类
  3. Object类中的功能(属性、方法)具有通用性
  4. Object类只声明了一个空参构造器

面向对象11:向下转型的使用、instanceof关键字、Object类的使用相关推荐

  1. Java 面向对象编程(三)——多态,方法重写,向上转型,向下转型

    所谓多态,就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪 ...

  2. 9.多态(P a1=new B();)重写与重载、instanceof关键字

    1.多态 P a1=new B(); 根据传入子类对象,自主选择重写的方法,没有重写则用父类P.但这并不意味着这个对象是子类B对象,相反它自转为父类PB对象,不能使用子类B的特有方法,属性. 从生活多 ...

  3. Java 向上转型 向下转型 instanceof

    看过的一些比较好的博文 Person per = new Student(); //向上转型 Student stu = (Student) per; //向下转型 Java向上转型和向下转型的通俗简 ...

  4. 【java基础18:方法覆盖与多态】什么时候使用方法覆盖 toString方法的覆盖 多态的基础语法与作用 向上/向下转型

    目录 方法覆盖Override 多态 方法覆盖Override 方法覆盖初体验,什么样的程序要方法覆盖 /*当前程序存在的问题(设计上的问题)??鸟儿在执行move()方法的时候,最好输出的结果是:& ...

  5. 多态、向上转型、向下转型

    7.2.1 引入 多态是继封装.继承之后,面向对象的第三大特性. 生活中,比如求面积的功能,圆.矩形.三角形实现起来是不一样的.跑的动作,小猫.小狗和大象,跑起来是不一样的.再比如飞的动作,昆虫.鸟类 ...

  6. Java接口,多态,向上转型,向下转型的意义

    接口 官方解释: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现 ,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能). 包含 ...

  7. java的向下转型_Java 向上/向下转型浅析

    基于java的继承,向上或者向下转型是一种常见的情景,在thinking in java对这一情况进行了详细说明,见以下例子: class Useful { public void f() {} pu ...

  8. 秒懂Java多态的引用类型转换——向上转型、向下转型(强制转型)

    多态的转型分为向上转型和向下转型两种 向上转型 多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的.当父类引用指向一个子类对象时,便是向上转型. 使用格式: 父类类型 变量名 = new 子 ...

  9. Encapsulate Downcast(封装向下转型)

    某个函数返回的对象,需要由函数调用者执行向下转型(downcast) public Object lastReading() {return readings.lastElement(); } 重构: ...

  10. Java对象类型向上转型和向下转型

    基础知识:Java中的继承机制使得一个类可以继承另一个类,继承的类称为子类,被继承的类称为父类.在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来 ...

最新文章

  1. Ubuntu16.04系统下汉字显示为方框解决办法(图文详解)
  2. PMCAFF | 产品经理如何设计敏捷开发流程?
  3. dataset存入mysql_将dataset写入数据库
  4. 《CUDA高性能并行计算》----2.2 需要知道的CUDA API和C语言拓展
  5. 卡牌大师怎么玩_用卡牌大师如何上分
  6. 8 WM配置-主数据-定义门(Dock Door)
  7. 学习网站的闪卡暴露了美军核机密
  8. Python:输出系统所有的PID
  9. Linux-Monitor-Tools
  10. Python(九)- 音频文字转换
  11. 未能连接到驱动人生服务器,更新显卡驱动提示“无法连接到Nvidia”,驱动人生来解决。...
  12. 塑胶产品规格书范本_塑胶产品结构设计--卡扣 - 范文中心
  13. vnc远程控制软件安装,超实用的windows下安装vnc远程控制软件教程
  14. WORD打印时显示错误,未定义标签?
  15. Linux文本比较指令(diff,cmp)详解
  16. RSA2分段加密解密
  17. 面试时如何更好的介绍自己的项目
  18. excel插件开发,Smartbi免费版安装流程
  19. 区块链+人工智能,重新定义世界
  20. 设置seaborn的画布大小

热门文章

  1. iphone 内部函数使用 (函数可能无法响应的部分解决方案)
  2. 集算器(仓库版)发布,黑科技获得用户好评
  3. 沙盒技术——selinux控制
  4. 进程线程(java.lang.Thread)详解
  5. spring mvc 页面跳转 携带数据的两种方式
  6. Can't connect to X11 window server using 'localhos
  7. 如何安装 chrome 开发版
  8. 软件天才都是训练出来的
  9. WordPress搬家更换域名教程
  10. sql server小知识