`

[原创]java中的向上转型与方法调用

    博客分类:
  • java
 
阅读更多

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()方法。

0
0
分享到:
评论

相关推荐

    java向上转型向下转型

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

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

    在Java编程语言中,向上转型和向下转型是对象多态性的关键组成部分,它们涉及到对象的类型转换,使得程序设计更加灵活且易于维护。下面将详细解释这两种转型的概念、原理及应用。 ### 向上转型 向上转型指的是将一...

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

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

    简单了解Java多态向上转型相关原理

    下面是调用语句,除了第四句,其他的传入对象都看起来与形参类型不符,但当然是可以运行的,这里面就蕴含着我们说的向上转型。 ```java public static void main(String[] args) { test(new PrimaryStudent());//...

    java之向上转型

    Java中的“向上转型”是指将子类对象转换为父类类型的过程。在Java中,这是一种自动转换,无需显式操作。这种转换允许我们用父类的引用去引用子类的对象,从而实现对子类功能的调用,同时保持代码的抽象性和通用性。...

    java的向上转型(学校教的)

    在主类中people类的声明对象分别作为Chinapeople和Americanpeople类对象的上转型对象,并让这个上转型对象调用showname方法。编写一个people类,该类有string类型的成员变量firstname和lastname来存放people对象的...

    Java向上转型和向下转型实例解析

    "Java向上转型和向下转型实例解析" 在Java中,向上转型和向下转型是两个非常重要的概念,它们都是基于继承机制的。向上转型是指子类对象转换为父类或接口,而向下转型是指父类对象转换为子类。了解向上转型和向下...

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

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

    向上转型1

    向上转型是面向对象编程中的一个重要概念,主要应用于Java等支持多态特性的语言。它指的是将子类的对象赋值给父类的引用,这样就可以通过父类引用来调用子类中继承自父类的方法。在Java中,这种转换是自动的,无需...

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

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

    java方法匹配原则

    Java中的方法匹配原则主要围绕着多态性和向上转型的概念。通过了解这些基本原则,开发者可以更好地理解和利用Java语言提供的灵活性和可扩展性,避免在编程过程中出现常见的错误。无论是向上转型还是向下转型,都需要...

    Java 转型(向上或向下转型)详解及简单实例

    本文将深入探讨Java中的向上转型和向下转型,同时提供简单的实例来帮助理解这些概念。 首先,让我们了解一下向上转型。向上转型(Upcasting)是指将子类对象赋值给父类引用。在Java中,这是自动完成的,因为子类...

    Java 多态中的类型转换

    本篇将深入探讨Java多态中的类型转换,包括向上转型(Upcasting)和向下转型(Downcasting),以及相关的注意事项。 1. **向上转型(Upcasting)** 向上转型是指将子类的对象引用赋值给父类的引用。在Java中,这是...

    Java上转型和下转型对象

    1. 向下转型必须先向上转型,否则会发生异常。 2. 下转型对象可以引用子类和父类的属性和方法。 代码示例: ```java public class Shangz { int a = 1; int b = 2; void cal() { System.out.println(a * b); ...

    JAVA中类的多态的理解.pdf

    总结来说,Java中的多态允许父类类型的引用变量指向子类的对象,根据对象的实际类型调用对应的方法。多态性极大地增强了程序的灵活性和扩展性,是面向对象编程的核心特性之一。通过理解并掌握多态的这些关键点,可以...

    java 子类对象赋值给父类对象的使用

    对于向上转型的对象,`equals()`方法会根据重写的情况来判断,而`==`始终比较引用。 7. **匿名内部类**:即使没有显式定义子类,也可以通过匿名内部类实现子类对象赋值给父类对象的操作,这在处理接口时非常常见。 ...

    Java中extends类的继承

    - 多态是面向对象的三大特性之一,子类对象可以被视为父类对象,这称为向上转型(Upcasting)。 - 这样可以使用父类引用操作子类对象,实现方法的动态绑定,提高代码的灵活性和扩展性。 9. **super关键字** - `...

    JAVA的LIST接口的REMOVE重载方法调用原理解析

    JAVA中的LIST接口提供了多个重载的REMOVE方法,分别传入参数为索引index、Object、Integer等,这些重载方法的调用原理是什么?在实际开发中,我们经常会遇到这种情况,例如在移除集合元素时,究竟是调用哪个REMOVE...

    JAVA中的继承与抽象

    JAVA中的继承与抽象 继承是面向对象编程的基本特征之一,它允许在已有的类基础上创建新的类,并继承已有类的成员变量和成员方法。继承的概念定义是:当类与类之间存在相同(共性)的内容,并满足子类是父类中的一种...

    java中与继承有关的程序内存分析

    9. **抽象类与接口**:Java中的抽象类可以有非抽象方法和实例变量,而接口只能包含常量和抽象方法。子类继承抽象类时必须实现所有抽象方法,而实现接口则必须提供接口中所有方法的实现。这两种方式都可以用来实现...

Global site tag (gtag.js) - Google Analytics