`
yeshaoting
  • 浏览: 684367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

上转型对象与下转型对象

    博客分类:
  • J2SE
阅读更多

 

二类特殊的对象: 上转型对象与下转型对象.

这两类对象都是在继承层面来说的.

 

1. 上转型对象

上转型对象是将子类的对象赋值给父类的引用,形如: SuperClass sup = subClass;

 

上转型对象不能使用子类新增成员(包括成员变量,成员方法),只能使用子类重写父类的方法,被子类隐藏的父类变量;子类未重写的父类方法,未被隐藏的父类成员变量.

 

silentlakeside 写道
属性,私有方法、静态方法、final方法都是静态绑定的,即编译期确定的。
其他方法是动态绑定的,即虚拟机运行时确定。
后者才可能出现override的情况。

 

2. 下转型对象

下转型对象是将父类的对象赋值给子类的引用,形如: SubClass sub = (SubClass)supClass;

 

一般认为子类父类的对象不能赋值给子类的引用,如: SubClass sub = (SubClass)new SuperClass();

这样的写法编译期不会报错,但是会产生运行时类型转换错误:

Exception in thread "main" java.lang.ClassCastException: SuperClass cannot be cast to SubClass
 at Client.main(Client.java:49)

 

但是有一种特殊情况下,这种转换是可行的.

特殊情况: 当父类引用指向子类的对象的时候,即supClass是一个上转型对象,supClass可以通过强制转换的方式赋值给子类的引用.

举例:

/*
@author jarg
@TODO 下转型对象测试
*/
class SuperClass
{
	void display()
	{
		System.out.println("super:\t" + this.toString());
	}
}

class SubClass extends SuperClass
{
	void display()
	{
		System.out.println("sub:\t" + this.toString());
	}
}

public class Super2Sub
{
	public static void main(String[] args)
	{
		SuperClass sup = new SubClass();	// 构造上转型对象
		SubClass sub = (SubClass)sup;		// 构造下转型对象
		sub.display();
	}
}

 

结果输出: sub: SubClass@1fb8ee3

当将上转型对象赋值给子类引用的时候,这种情况可行.

 

0
0
分享到:
评论

相关推荐

    上转型对象体现多态

    ### 上转型对象与多态 #### 1. 上转型对象的定义 上转型对象是指将子类的对象赋值给父类的引用变量。这种做法使得父类的引用变量可以指向子类的对象,从而实现了多态性。例如: ```java Animal animal = new Dog...

    Java 中的上转型对象 使用

    8. **抽象类与接口**:上转型对象也可以应用于抽象类和接口,抽象类可以有非抽象方法,而接口只包含抽象方法。两者都可以用来实现多态。 9. **设计模式**:在设计模式中,如工厂模式、策略模式等,上转型对象扮演着...

    Java实现运用上转型对象抽象方法计算圆形或圆锥的面积、周长等成员变量

    Java实现运用上转型以及对象抽象方法计算圆形或圆锥的面积、周长等成员变量

    Java上转型和下转型对象

    Java 上转型和下转型对象 Java 中的上转型和下转型对象是对象之间的类型转换关系,用于描述父类和子类之间的继承关系。在 Java 中,我们可以通过上转型和下转型来实现对象之间的类型转换。 上转型对象 上转型对象...

    java向上转型向下转型

    Java 向上转型与向下转型 Java 转型是 Java 编程中的一种非常重要的概念,主要包括向上转型和向下转型两种。向上转型是指将子类对象转换为父类对象,而向下转型是指将父类对象转换为子类对象。 向上转型...

    java的对象引用与对象的区别、多态性理解、向上转型和向下转型、栈和堆等综合型的知识.docx

    本文将深入探讨对象引用与对象的区别、多态性、向上转型和向下转型以及栈和堆内存的管理。 首先,让我们了解对象引用与对象的区别。对象是根据类实例化出来的实体,它们在内存中的位置通常在堆区,具有实际的数据和...

    java对象转型实例分析

    在Java编程语言中,对象转型是一种重要的概念,它允许我们改变对象的类型,以便我们可以以不同的方式使用同一个对象。在上述实例中,我们探讨了两种主要的转型方式:向上转型(upcasting)和向下转型(downcasting)...

    对象转型和多态1

    本文将深入探讨Object类、对象转型(向上转型和向下转型)以及多态的概念。 **第一节: Object类** Object类是所有Java类的基类,它位于类层次结构的根节点。这意味着,无论你创建哪个自定义类,最终都会间接地...

    java向上转型和向下转型.doc

    向下转型与向上转型相反,它是指将父类的引用强制转换为子类的引用。这种转型通常需要显式地使用类型转换操作符。例如: ```java MMGirl mmg = (MMGirl) g1; ``` 其中,`g1`是一个`Girl`类型的引用,但它实际上...

    day10 21 对象的向下转型

    day10_21_对象的向下转型

    学习Java之如何正确地向上转型与向下转型.rar

    理解并熟练运用Java中的向上转型和向下转型是掌握面向对象编程的关键。向上转型简化了代码,提高了代码的通用性,而向下转型则提供了访问子类特定功能的能力。在实际开发中,需谨慎使用向下转型,并确保在转型前进行...

    289.287.JAVA基础教程_面向对象(中)-向下转型的几个常见问题(289).rar

    上向转型是自动的,不需要显式转换,即子类对象可以赋值给父类引用,这在多态中非常常见。而向下转型是显式的,需要程序员手动进行,以获取子类的特有功能。 7. **使用接口进行多态** 在Java中,接口也可以用于...

    《华为企业数字化转型之道.pdf》

    2. 转组织:转型过程中往往需要在业务侧,由业务与IT组成一体化团队,基于统一的数字平台,开展转型的工作。 3. 转文化:“大平台支撑精兵作战”强调每个人从平台中拿什么?并能反哺什么到平台里去。 4. 转方法:...

    国有企业数字化转型报告

    整体上看,本次调研是对2021年调研的发展与深入,对国有企业数字化转型的 进一步细致摸底¹。 此次调研采用问卷与访谈相结合的方式进行。在问卷调研方面,主要向国有 企业的集团高管、部门管理人员和技术人员发放...

    华为数字化转型实践.pdf

    华为公司旨在为这五类用户提供一站式体验,用数字化手段做深连接,追求客户/用户满意连接知识信息和知识推送连接业务场景驱动快速连接业务连接团队以人为中心的连接连接装备连接线上与线下,多渠道接入客户/用户。...

    跨境电商背景下浙江货代企业转型方向与对策研究.pdf

    本研究以浙江省的货代企业为研究对象,分析了在跨境电商环境下货代企业的转型方向与对策。 首先,浙江省货代行业的现状表明,货代企业的发展与国际货物贸易密切相关。浙江省的经济规模和外贸量都十分可观,作为传统...

    Java 向上转型和向下转型的详解

    Java 向上转型和向下转型是面向对象编程语言中的一个重要概念,它们都是继承机制的基础上进行转型的。向上转型是将子类对象转换为父类类型的过程,而向下转型是将父类对象转换为子类类型的过程。 向上转型...

    华为数字化转型实践分享.pdf

    在数字化转型的实践过程中,企业需要将数据作为处理对象,利用ICT平台、软件和服务,构建一个以数据为中心的生产模式。这涉及到智能终端与机器平台的使用,以及从客户接触、数据处理到开发部署的完整服务链。 华为...

    java中对象转型多态抽象类接口笔记.doc

    ### Java中的对象转型与多态 #### 一、对象转型 在Java中,对象转型(Casting)是指将一个对象的引用从一个类转换到另一个类的过程。这通常发生在类的继承关系中。 ##### 向上转型(Upcasting) - **定义**:将...

    Java4Android 21_对象的转型

    主要讲述了JAVA中对象的转型的相关问题。

Global site tag (gtag.js) - Google Analytics