Java 向上类型转换与向下类型转换的理解【复习】
今天在回顾 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 向上类型转换与向下类型转换的理解【复习】相关推荐
- C++中的向上类型转换和向下类型转换+四种强制类型转换
转自博客:http://blog.csdn.net/wangweitingaabbcc/article/details/7720979# 在c++的世界中有这样两个概念,向上类型转换,向下类型转换,分 ...
- [JAVA]向上转型与向下转型
要理解多态性,首先要知道什么是"向上转型"."向下转型". 对象的多态性:父子类对象的转换 **向上转型:**子类对象变为父类对象,语法: 父类 父类对象 = ...
- java --向上转型和向下转型
一.简述 Java 转型主要是用在继承和接口实现的场景,Java 转型可分为向上转型和向下转型,区别如下: 向上转型:通过子类对象实例化父类对象,这属于自动转换. 向下转型:通过父类对象实例化子类 ...
- 向上类型转换VS向下类型转换
子类转换成父类时的规则: 将一个父类的引用指向一个子类的对象,称为向上转型(upcasting),自动进行类型转换.此时通过父类引用调用的方法是子类覆盖或继承父类的方法,不是父类的方法. 此时通过父类 ...
- java向上转型与向下转型
java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象. 什么叫父类引用指向子类对象,且听我慢慢道来. 从2个名词开始说起:向上转型(upcasting) .向下转型(downcasti ...
- java 向上转型与向下转型
基础知识:Java中的继承机制使得一个类可以继承另一个类,继承的类称为子类,被继承的类称为父类.在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来 ...
- Java向上转型和向下转型
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/75530403冷血之心的博客) 向上转型:父类引用指向子类对象 ...
- 1.7 JAVA 向上转型和向下转型解析
向上转型:父类对象 = 子类对象,自动进行 向下转型: 子类对象 = (子类)父类对象, 必须强制转换 向上转型后,调用的方法一定是被子类覆写过后的方法,但是一定注意,只在子类定义的方法是无法调用的, ...
- java 向上取整 向下取整
Math.ceil()//向上取整,如1.5->2.0 Math.floor()//向下取整,如1.5->1.0
最新文章
- Oracle执行计划突变诊断之统计信息收集问题
- kcp 协议分析 基于udp的可靠协议
- sql 计算两个小数乘积_数学家是如何计算出π的?
- [Diary]6.10
- (计算机组成原理)第三章存储系统-第四节:主存储器和CPU的连接
- python异常处理_Python 工匠: 异常处理的三个好习惯
- 使用RAID进行磁盘管理
- 前景检测算法(八)--SACON算法
- varchar长度可以任意设置吗_户内金属软管长度可以超过2m吗?
- 线程--匿名内部类实现多线程的2种方式
- android逆向去广告,教程]安卓逆向去广告教程送给大家(
- 使用Arduino IDE环境学习ESP32--CAM
- 深度学习系列18:开源人脸识别库
- asp.net社区户籍档案管理系统
- T216909 小卡与质数2 (前缀和 欧拉筛
- Android 常见的透明度颜色值ARGB 半透明 全透明
- 小程序内识别二维码调查
- MTI动目标指示和MTD动目标检测
- Oracle plsql 计算日期间工作日天数
- 如何正确地学习Java