1. 定义

如果B类是A类的子类或间接子类,当用B类创建对象b并将这个对象b的引用赋给A类对象a时,如:

A a;
a = new B();
OR
A a;
B b = new B();
a = b;

则称A类对象a是子类B对象b的上转型对象。

2. 性质

对象b的上转型a的实体是有子类B创建的,但是上转型对象会失去子类B的一些属性和功能。上转型对象具有以下特点:

  1. 上转型对象不能操作子类新增加的成员变量,不能使用子类新增的方法。即为较子类B失去一些属性和功能,这些属性和功能是新增的。

  2. 上转型对象可以操作子类继承或隐藏的成员变量,也可以使用子类继承的或重写的方法。即为上转型对象可以操纵父类原有的属性和功能,无论这些方法是否被重写。

  3. 上转型对象调用方法时,就是调用子类继承和重写过的方法。而不会是新增的方法,也不是父类原有的方法。

  4. 可以将对象的上转型对象再强制转换到一个子类对象,强制转换过的对象具有子类所有属性和功能。

3. 举例

如:

OutputStream output;
output = new FileOutputStream(filename);

并且根据Java API知

java.lang.Object
  java.io.OutputStream
     java.io.FileOutputStream

这时,output就是上转型对象啦。有什么特殊呢?就是output可以使用FileOutputStream从父类OutputStream那里继承来的方法和重写的方法,而不能使用子类FileOutputStream自己新增的方法啦。最后,这种方法是很常用的哦。。。当父类有很多子类时,就能实现方法的多态。^_^

转载于:https://blog.51cto.com/10463240/1671864

java、上转型对象相关推荐

  1. java 上转型对象_Java中上转型对象数组

    先上结论:上转型对象数组,不能添加子类类型以外的元素,编译可以通过,但是运行时会报错. 原文 在Java中,Object[]数组可以是任何数组的父类(因为任何一个数组都可以向上转型为它在定义时指定元素 ...

  2. java 上转型对象_Java上转型和下转型对象

    版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创! 恰饭广告 上转型对象:子类创建对象 并将这个对象引用赋值给父类的对象. 语法格式:Father f=new Son(); 注 ...

  3. java上转型对象特点_Java 浅析三大特性之一继承

    上文Java 浅析三大特性之一封装我们说到Java是一个注重编写类,注重于代码和功能复用的语言.Java实现代码复用的方式有很多,这里介绍一个重要的复用方式--继承. 在介绍继承之前,我们要明确一点, ...

  4. java学习(51):上转型对象

    定义一个animal类 //java上转型对象 public class Animal { public String name="动物"; public String getNa ...

  5. java 对象的上转型对象(父类)

    Example5_10.java class 类人猿 {void crySpeak(String s) {System.out.println(s); } } class People extends ...

  6. 什么是上转型对象及其基本特征

    5.12.什么是上转型对象及其基本特征? 上转型对象---子类对象赋值给父类变量. 例如: package com.wangxing.test1; //父类 public class Person { ...

  7. java上转型与下转型,Java -- 上转型和下转型

    首先理解一句话:父类引用指向子类对象:什么意思呢? 记得在刚开始学习面向对象编程时候,经常听老师讲:如果要使用一个类中的成员,就需要先实例化对象,就是说要先创建一个引用类型的对象,就可以使用里边的内容 ...

  8. java上转型来实现人种和地区的识别

    首先创建一个人的抽象类People,类中默认一个抽象方法,一个带返回值的方法. ackage jiekou;public abstract class People {public abstract ...

  9. 天耀18期 -08.面向对象-上转型【作业】

    1.   上转型对象的定义是什么?阐述自己对上转型对象的理解,用文字描述. 上转型:父类声明,子类实例化叫做上转型. (自己的理解)上转型对象可以利用父类中的全员变量和方法,当子类进行全员变量隐藏或方 ...

最新文章

  1. 使用QT定时器 隐藏 label
  2. 2020年, VQA论文汇总
  3. 2017年第八届蓝桥杯 - 国赛 - C/C++大学B组 - A. 36进制
  4. MyBatisPlus_更新篇_入门试炼_03
  5. 【10.1】python中的GIL
  6. sed,awk,grep学习笔记
  7. 2022年6月TIOBE编程语言排名:Python、C、Java
  8. 干货 | 【备考PMP】 鬼知道经历了什么,成功拿下5A成绩~
  9. Linux 命令 大结
  10. Windows 7 频繁提示:计算机的内存不足
  11. GoTop给网站加一个悬挂猫效果上吊猫
  12. GitHub代码,资源下载慢?怎么办?
  13. python版CSDN博客备份工具
  14. echarts 双Y轴,双X轴, 折线图折点,折点与直方对应
  15. 现在还可以做公众号吗?我是如何在细分领域公众号粉丝一年不到从0到5000+增长?
  16. ubuntu 切换 java 版本
  17. 在ANSYS workbench中如何对物体局部区域进行网格细密化
  18. ERROR [master/jinghang01:16000:becomeActiveMaster] master.HMaster: Failed to become active master
  19. ZO1X(功能安全验证)介绍
  20. 平台开发——skynet——⑤网关服务gate

热门文章

  1. 一部IT电影,《反托拉斯行动》,主角加里-文斯顿(蒂姆·罗宾斯饰)影射比尔·盖茨...
  2. 机器人产业:借人工智能突破“拐点”
  3. ASP.NET中 DropDownList+GridView(网格视图)的使用前台绑定[高]
  4. python ImportError: No module named unittest2
  5. eigrp 重分布默认路由
  6. 最好最坏和平均情况下的性能分析
  7. Google C++ 编码风格精简
  8. golang中的strings.TrimRight
  9. 内核地址空间和用户地址空间
  10. Flash存储控制器组成!(flash)