今天在回顾 Java 知识的时候碰到了这个知识点,正好重新巩固一下。

在面向对象编程中,因为子类与父类存在继承关系,所以对象类型存在着转换,包括向上类型转换和向下类型转化。

1.向上类型转换是指将子类对象的引用转化为父类对象的引用,用个例子说明一下:

//父类:
public class ParentClass {public void print() {System.out.println("父类方法");}
}
// 子类
public class ChildClass extends ParentClass{public void print() {System.out.println("子类方法");}public void childMethod() {System.out.println("只在子类中定义的方法 ");}public static void main(String[] args) {ParentClass p = new ChildClass();p.print();}}

输出结果为:

子类方法

也就是子类的 print() 方法重写了父类的方法,所以输出的是子类的 print()
子类对象的引用转化为父类对象的引用” 这句话
等号右边new ChildClass()就是子类对象的引用
将等号右边的东西赋值给等号左边,就是转化为父类对象的引用
这样应该明白这句话了吧

当我们在写 p. 什么东西的时候,编辑器自动弹出的只有 print()这个方法,而没有childMethod()这个方法,所以,这个向上类型转换的意思就是子类向上类型转化成父类的对象,如果子类重写了父类的方法,输出结果是子类重写的方法,如果父类中没有的方法,而在子类中存在的方法是不可以调用的,归根结底一句话,父亲有的东西你才能调用,父亲给你留下的你怎么修改是你的事

2.向下类型转换是指将父类对象的引用转化为子类对象的引用
直接看例子吧,对比着向上类型转换理解

// 父类
public class ParentClass {public void print() {System.out.println("父类方法");}
}
// 子类
public class ChildClass extends ParentClass{public void childMethod() {System.out.println("只在子类中定义的方法 ");}public static void main(String[] args) {ParentClass p = new ChildClass(); // 这里是向上类型转换p.print();ChildClass c = (ChildClass)p; // p本来是父类对象的引用,现在我要做的是向下类型转换,所以,强制把父类对象的引用转化为了子类对象的引用c.print();c.childMethod();}
}

输出结果:

父类方法
父类方法
只在子类中定义的方法

再说明一下 向下类型转换:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用类型

有的同学问了,问啥不直接这样写:

ChildClass child = new ParentClass();

问的好,因为,我们并不能保证子类的方法父类一定有是吧,所以要按照上面的例子那样写。

Java 向上类型转换与向下类型转换的理解【复习】相关推荐

  1. C++中的向上类型转换和向下类型转换+四种强制类型转换

    转自博客:http://blog.csdn.net/wangweitingaabbcc/article/details/7720979# 在c++的世界中有这样两个概念,向上类型转换,向下类型转换,分 ...

  2. [JAVA]向上转型与向下转型

    要理解多态性,首先要知道什么是"向上转型"."向下转型". 对象的多态性:父子类对象的转换 **向上转型:**子类对象变为父类对象,语法: 父类 父类对象 = ...

  3. java --向上转型和向下转型

    一.简述   Java 转型主要是用在继承和接口实现的场景,Java 转型可分为向上转型和向下转型,区别如下: 向上转型:通过子类对象实例化父类对象,这属于自动转换. 向下转型:通过父类对象实例化子类 ...

  4. 向上类型转换VS向下类型转换

    子类转换成父类时的规则: 将一个父类的引用指向一个子类的对象,称为向上转型(upcasting),自动进行类型转换.此时通过父类引用调用的方法是子类覆盖或继承父类的方法,不是父类的方法. 此时通过父类 ...

  5. java向上转型与向下转型

    java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象. 什么叫父类引用指向子类对象,且听我慢慢道来. 从2个名词开始说起:向上转型(upcasting) .向下转型(downcasti ...

  6. java 向上转型与向下转型

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

  7. Java向上转型和向下转型

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/75530403冷血之心的博客) 向上转型:父类引用指向子类对象   ...

  8. 1.7 JAVA 向上转型和向下转型解析

    向上转型:父类对象 = 子类对象,自动进行 向下转型: 子类对象 = (子类)父类对象, 必须强制转换 向上转型后,调用的方法一定是被子类覆写过后的方法,但是一定注意,只在子类定义的方法是无法调用的, ...

  9. java 向上取整 向下取整

    Math.ceil()//向上取整,如1.5->2.0 Math.floor()//向下取整,如1.5->1.0

最新文章

  1. Oracle执行计划突变诊断之统计信息收集问题
  2. kcp 协议分析 基于udp的可靠协议
  3. sql 计算两个小数乘积_数学家是如何计算出π的?
  4. [Diary]6.10
  5. (计算机组成原理)第三章存储系统-第四节:主存储器和CPU的连接
  6. python异常处理_Python 工匠: 异常处理的三个好习惯
  7. 使用RAID进行磁盘管理
  8. 前景检测算法(八)--SACON算法
  9. varchar长度可以任意设置吗_户内金属软管长度可以超过2m吗?
  10. 线程--匿名内部类实现多线程的2种方式
  11. android逆向去广告,教程]安卓逆向去广告教程送给大家(
  12. 使用Arduino IDE环境学习ESP32--CAM
  13. 深度学习系列18:开源人脸识别库
  14. asp.net社区户籍档案管理系统
  15. T216909 小卡与质数2 (前缀和 欧拉筛
  16. Android 常见的透明度颜色值ARGB 半透明 全透明
  17. 小程序内识别二维码调查
  18. MTI动目标指示和MTD动目标检测
  19. Oracle plsql 计算日期间工作日天数
  20. 如何正确地学习Java

热门文章

  1. CentOS 6.3 编译安装 Nginx(含:管理脚本)
  2. 用dedecms自定义表单创建简易自助预约系统
  3. 医学教育网批量资源下载程序之——完成
  4. Cisco BFD双向转发检测技术部署案例
  5. 解读电感和电容在交流电路中的作用
  6. 使用ffmpeg对视频进行TS切片
  7. 北斗部标808协议解析说明示例
  8. 简单C语言程序的执行过程
  9. C++二维数组讲解、二维数组的声明和初始化
  10. 无法连接共享打印机处理办法