`

java上下转型

    博客分类:
  • java
阅读更多
这是个很基本的java问题,看下注释就清楚了
但由它可以联想出其它很多东西
package complex.java.cast;

/**
 * 此类用于测试java的上下转型问题
 * 
 * @author gaol
 * 
 */

// 车
public class Car {
	public void print() {
		System.out.println("我是一辆车");
	}

	/**
	 * 结论:java上转型不会有问题,但转型后引用的对象仍为子类<br>
	 *       java下转型需要强制转换,只有原来引用的对象与转换的对象一致时才正确,<br>
	 *       否则会报java.lang.ClassCastException
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		Car b = new Car();// 这是一辆车
		Kache kache = new Kache();// 这是一辆卡车
		Tuolaji tuolaji = new Tuolaji();// 这是一辆拖拉机

		b = kache;// 上转型 此时b就是一辆卡车
		b.print();// 此时虽然类型为父类,但实际引用的对象仍为子类
		          // 输出:我是一辆卡车
		// tuolaji = (Tuolaji)b;//下转型 强制把卡车变成拖拉机 肯定有问题(虽然编译不出错)

		// tuolaji = (Tuolaji) new Car();// 下转型 强制把随便一辆车变成拖拉机 肯定有问题(虽然编译不出错)
		kache = (Kache) b; // 下转型 强制把卡车变成卡车 这样是没有问题的
		kache.print();
	}
}

// 卡车
class Kache extends Car {

	public void print() {
		System.out.println("我是一辆卡车");
	}

	public void print1() {
		System.out.println("我是一辆卡车");
	}

}

// 拖拉机
class Tuolaji extends Car {
	public void print() {
		System.out.println("我是一辆拖拉机");
	}

	public void print1() {
		System.out.println("我是一辆拖拉机");
	}
}

分享到:
评论

相关推荐

    java 多态 经典讲解

    在Java中,多态主要通过两种方式体现:**向上转型**和**方法重写**。 #### 二、向上类型转换(upcasting) 向上类型转换是指将子类的对象赋值给父类的引用,这一过程是自动进行的,无需显式转换。例如,在上述例子中...

    Java-多态--学习笔记.docx

    ### 二、对象上下转型 1. **向上转型**:子类对象被赋值给父类引用,这是安全的,因为所有子类都具备父类的属性和方法。但是,一旦这样赋值,子类特有的属性和方法就会丢失,无法通过父类引用直接访问。例如: ```...

    Java_ploymorphism.rar_ploymorphi_多态

    这展示了Java的向上转型,即子类对象可以被赋值给父类引用。通过这种方式,我们可以在不关心具体类型的情况下处理集合中的元素,实现代码的通用性。 2. **ObjectVarTest.java**:通常,我们使用Object类作为参数...

    java 考试(2).docx

    * 在 Java 中,可以使用接口回调机制,以便在不同的上下文中调用同一个方法。 * 在 Administrative 类的 check 方法中,我们可以看到它使用了 IWork 接口的回调机制,以便调用不同的工作内容。 五、向上转型 * 在 ...

    JAVA高频笔试题_csdn_sty945.pdf

    4. Java中的向下转型和向上转型概念。向下转型是将父类引用转换为子类类型的引用。向上转型则是将子类引用转换为父类类型。在向下转型时要注意类型转换异常(ClassCastException)。 5. Servlet生命周期方法的使用...

    Java面向对象多态.pdf

    多态性体现在同一类型的对象在不同上下文中有不同的行为和状态,这主要通过继承、方法重写和向上转型来实现。 1. 方法重写(Override) 方法重写是指子类对从父类继承的方法进行重新定义,以适应子类的特殊需求。在...

    2022年衡阳地区高级Java工程师职位薪酬调查报告.pdf

    具体来看,中位数(Median)为194,548元,这是一个代表性的数值,意味着一半以上的高级Java工程师的年薪在这个数字上下波动。而P25(第二十五百分位数)、P50(第五十分位数)、P75(第七十五百分位数)以及P90(第...

    2022年鄂州地区高级Java工程师职位薪酬调查报告.pdf

    - P50(Median):163,372元,这是报告中高级Java工程师的平均薪酬水平,代表了一半工程师的薪资落在这个数字上下。 - P75:180,820元,表示75%的工程师薪资低于这个数额。 - P90:232,627元,只有10%的高级工程师能...

    four_java继承封装和多态_four_againgpg_

    当使用父类引用指向子类对象时,调用的方法会根据实际的对象类型而非引用类型确定,这就是所谓的“向上转型”和“动态绑定”。 在"againgpg"这个上下文中,"pg"可能代表"编程"或"程序员",而"four"可能是表示这是...

    java的继承共2页.pdf.zip

    - 向上转型(父类引用指向子类对象)是多态的基础,允许使用子类对象执行父类定义的方法。 12. **Javadoc与继承** - Javadoc是Java的文档生成工具,可以处理继承关系,生成包括父类和接口信息的文档。 13. **...

    基于朴素贝叶斯分类的Java课程网络答疑反馈系统.zip

    在信息技术日益发达的今天,教育领域的数字化转型已经成为必然趋势。本系统旨在利用先进的数据处理技术,为Java课程的学习者提供一个高效、智能的在线答疑反馈平台。在这个系统中,核心算法是朴素贝叶斯分类,它在...

    Java_Employees:员工项目。 用于演示继承。 基于“Java How To Program, 10e, Early Objects”——第 9 章和第 10 章

    这种方法可以处理各种类型的员工,无需知道具体的类类型,这被称为向上转型。 在第9章和第10章中,"Java How To Program, 10e, Early Objects" 这本书可能深入讲解了如何在Java中实现继承和多态性。这些章节可能...

    json 数据解析包

    4. **ezmorph-1.0.4.jar**:Ezmorph是一个Java库,主要用于对象的动态转型。在处理JSON时,它可能帮助将JSON数据转换为Java对象,或者将Java对象转换为JSON格式,增加了灵活性。 这些库在处理JSON时通常扮演以下...

    基于jsp的网上文玩销售系统源码数据库论文.doc

    随着互联网的普及和电子商务的崛起,越来越多的行业开始转型线上,以适应现代消费者的购物习惯。文玩市场也不例外,从传统的实体店销售逐渐向线上转移,以提高效率和便利性。此系统正是为了解决这一问题,通过建立...

    OJ_simple_10.08.txt

    这段代码使用了`StringBuffer`来构建表格的上下边界以及中间的内容行。通过循环结构和字符串操作实现了简单的表格绘制功能。 ### 四、计算因数数量及输出因数列表 下面的代码用于计算一个整数的所有因数,并统计...

    activiti-5.21.0(war部分)

    在Activiti的上下文中,war部分通常包含了流程引擎的Web管理界面,如Activiti Explorer和Activiti Modeler,这些工具允许用户图形化设计流程、启动流程实例、监控流程状态等。 **Activiti 5.21.0 特性** 在5.21.0...

    T4-淘宝私有云

    综上所述,T4不仅是一项技术革新,也是淘宝乃至整个阿里巴巴集团向更加高效、灵活的私有云架构转型的关键步骤。通过持续的技术迭代与应用场景拓展,T4将进一步推动企业内部资源的有效管理和利用,为用户提供更高质量...

    基于安卓的国潮服饰销售app发任务书.doc

    通过以上设计,国潮服饰销售APP将成为一个集品牌展示、商品交易、用户互动于一体的综合平台,有助于推动国潮服饰销售行业的数字化进程,提高销售效率,增强用户体验,同时也为其他类似业务的信息化转型提供了参考。

    毕业论文springboot278基于JavaWeb的鲜牛奶订购系统的设计与实现论文.doc

    随着互联网技术的飞速发展,各行各业都在寻求数字化转型,以提高工作效率和客户满意度。在鲜牛奶行业,传统的订购方式面临诸多挑战,如信息管理复杂、错误率高、数据处理耗时等。为了解决这些问题,本论文提出并实现...

Global site tag (gtag.js) - Google Analytics