`

[原创]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的向上转型(学校教的)

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

    java之向上转型

    向上转型经典案例向上转型向上转型应注意的问题向上转型的好处静态方法的调用 经典案例 public class Animal { public void eat(){ System.out.println("animal eatting..."); } } public class Cat extends ...

    上转型对象体现多态

    深入理解Java中向上转型对象体现的多态,以及面向对象思想

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

    2)末尾的()意味着,在对象创建后,立即调用Vehicle类的构造函数,对刚生成的对象进行初始化。构造函数是肯定有的。如果你没写,Java会给你补上一个默认的构造函数。 3) 左边的 “Vehicle veh1”创建了一个Vehicle类...

    Java方法的动态绑定与静态绑定

     绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定。  静态绑定:  在程序执行前方法已经被绑定,此时由编译器或其它连接...

    java基础案例与开发详解案例源码全

    向上转型.向下转型164 6.2.4 动态绑定166 6.4 访问修饰符167 6.5 static修饰符168 6.5.1 静态变量168 6.5.2 静态方法169 6.5.3 静态代码块169 6.5.4 单态模式170 6.6 final修饰符171 6.7 abstract修饰符172 6.8 接口...

    Java 基础核心总结 +经典算法大全.rar

    向上转型static final 接口和抽象类接口 抽象类异常 认 识 Exception 什么是 Throwable 常见的 Exception 与 Exception 有关的 Java 关键字 throws 和 throw try 、finally 、catch 什么是 Error 内部类 创建内部类...

    Java面向对象多态.pdf

    它是基于继承、重写和向上转型等特性实现的,多态是面向对象编程的三大特征之一,其他两个分别是封装和继承。 Java 多态包括以下三种方式 方法重写(Override) 子类可以对从父类继承的方法进行重写,以便根据子类的...

    AIC的Java课程1-6章

     清楚如何通过向上转型(引用的隐式转型),方法重写,运行期绑定来实现多态性。  体会多态性如何使系统可扩展和可维护。  理解运行时判定引用对象的类型(instanceof),进行强制转型(即引用的显示转型...

    java三大特性之多态与接口

    面向对象三大特征之多态 input可以根据不同的"type"(条件)产生不同形态 ...必须满足向上转型的写法 多态的验证 Fu f=new Zi(); 调用子类中都有重写的那个方法,f.有重写的方法(); 多态的弊端

    【04-面向对象(上)】

    在方法中引用调用该方法的对象 •在方法里的this 指谁调用就指谁 •注: this 不能用在有static 修饰的方法中. 方法的详解 •方法的所属性  –一旦将一个方法定义在一个类里,如果用static 修饰了,这个方法...

Global site tag (gtag.js) - Google Analytics