java中的向上转型,如Shape shape = new Triangle(); 不是说把创建好的的Triangle对象“转化”成一个java对象,而是缩小该对象可被调用的方法,只可以调用和父类相同的方法即父类的全部方法,相当于“变成”了一个父类对象,下列例子描述了一个Shape类和他的子类Triangle,父类包含两个方法,say()和hello(),say()方法调用hello方法;子类重写了父类的hello方法,say()方法没有改动。
父类Shape
package com.wm; public class Shape { public void say() { hello();//相当于this.hello(); 而this指的就是当前对象 } protected void hello() { System.out.println("Hello Shape"); } }
子类Triangle
package com.x; import com.wm.Shape; public class Triangle extends Shape { public static void main(String[] args) { Triangle triangle = new Triangle(); System.out.println(triangle); Shape shape = triangle; System.out.println(triangle); shape.say(); } @Override protected void hello() { // TODO Auto-generated method stub System.out.println("hello Triangle"); } }
运行结果是:
com.x.Triangle@f72e77
com.x.Triangle@f72e77
hello Triangle
通过结果可知,虽然把Triangle对象向上转型为Shape对象,但是对象的类型并没有改变,还是com.x.Triangle,所以,在子类中调用say()方法调用的hello()方法就是子类中被覆盖的hello()方法。
相关推荐
Java 向上转型与向下转型 Java 转型是 Java 编程中的一种非常重要的概念,主要包括向上转型和向下转型两种。向上转型是指将子类对象转换为父类对象,而向下转型是指将父类对象转换为子类对象。 向上转型...
在Java编程语言中,向上转型和向下转型是对象多态性的关键组成部分,它们涉及到对象的类型转换,使得程序设计更加灵活且易于维护。下面将详细解释这两种转型的概念、原理及应用。 ### 向上转型 向上转型指的是将一...
理解并熟练运用Java中的向上转型和向下转型是掌握面向对象编程的关键。向上转型简化了代码,提高了代码的通用性,而向下转型则提供了访问子类特定功能的能力。在实际开发中,需谨慎使用向下转型,并确保在转型前进行...
下面是调用语句,除了第四句,其他的传入对象都看起来与形参类型不符,但当然是可以运行的,这里面就蕴含着我们说的向上转型。 ```java public static void main(String[] args) { test(new PrimaryStudent());//...
Java中的“向上转型”是指将子类对象转换为父类类型的过程。在Java中,这是一种自动转换,无需显式操作。这种转换允许我们用父类的引用去引用子类的对象,从而实现对子类功能的调用,同时保持代码的抽象性和通用性。...
在主类中people类的声明对象分别作为Chinapeople和Americanpeople类对象的上转型对象,并让这个上转型对象调用showname方法。编写一个people类,该类有string类型的成员变量firstname和lastname来存放people对象的...
"Java向上转型和向下转型实例解析" 在Java中,向上转型和向下转型是两个非常重要的概念,它们都是基于继承机制的。向上转型是指子类对象转换为父类或接口,而向下转型是指父类对象转换为子类。了解向上转型和向下...
### Java中的对象转型与多态 #### 一、对象转型 在Java中,对象转型(Casting)是指将一个对象的引用从一个类转换到另一个类的过程。这通常发生在类的继承关系中。 ##### 向上转型(Upcasting) - **定义**:将...
向上转型是面向对象编程中的一个重要概念,主要应用于Java等支持多态特性的语言。它指的是将子类的对象赋值给父类的引用,这样就可以通过父类引用来调用子类中继承自父类的方法。在Java中,这种转换是自动的,无需...
本文将深入探讨对象引用与对象的区别、多态性、向上转型和向下转型以及栈和堆内存的管理。 首先,让我们了解对象引用与对象的区别。对象是根据类实例化出来的实体,它们在内存中的位置通常在堆区,具有实际的数据和...
Java中的方法匹配原则主要围绕着多态性和向上转型的概念。通过了解这些基本原则,开发者可以更好地理解和利用Java语言提供的灵活性和可扩展性,避免在编程过程中出现常见的错误。无论是向上转型还是向下转型,都需要...
本文将深入探讨Java中的向上转型和向下转型,同时提供简单的实例来帮助理解这些概念。 首先,让我们了解一下向上转型。向上转型(Upcasting)是指将子类对象赋值给父类引用。在Java中,这是自动完成的,因为子类...
本篇将深入探讨Java多态中的类型转换,包括向上转型(Upcasting)和向下转型(Downcasting),以及相关的注意事项。 1. **向上转型(Upcasting)** 向上转型是指将子类的对象引用赋值给父类的引用。在Java中,这是...
1. 向下转型必须先向上转型,否则会发生异常。 2. 下转型对象可以引用子类和父类的属性和方法。 代码示例: ```java public class Shangz { int a = 1; int b = 2; void cal() { System.out.println(a * b); ...
总结来说,Java中的多态允许父类类型的引用变量指向子类的对象,根据对象的实际类型调用对应的方法。多态性极大地增强了程序的灵活性和扩展性,是面向对象编程的核心特性之一。通过理解并掌握多态的这些关键点,可以...
对于向上转型的对象,`equals()`方法会根据重写的情况来判断,而`==`始终比较引用。 7. **匿名内部类**:即使没有显式定义子类,也可以通过匿名内部类实现子类对象赋值给父类对象的操作,这在处理接口时非常常见。 ...
- 多态是面向对象的三大特性之一,子类对象可以被视为父类对象,这称为向上转型(Upcasting)。 - 这样可以使用父类引用操作子类对象,实现方法的动态绑定,提高代码的灵活性和扩展性。 9. **super关键字** - `...
JAVA中的LIST接口提供了多个重载的REMOVE方法,分别传入参数为索引index、Object、Integer等,这些重载方法的调用原理是什么?在实际开发中,我们经常会遇到这种情况,例如在移除集合元素时,究竟是调用哪个REMOVE...
JAVA中的继承与抽象 继承是面向对象编程的基本特征之一,它允许在已有的类基础上创建新的类,并继承已有类的成员变量和成员方法。继承的概念定义是:当类与类之间存在相同(共性)的内容,并满足子类是父类中的一种...
9. **抽象类与接口**:Java中的抽象类可以有非抽象方法和实例变量,而接口只能包含常量和抽象方法。子类继承抽象类时必须实现所有抽象方法,而实现接口则必须提供接口中所有方法的实现。这两种方式都可以用来实现...