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()方法。
相关推荐
在主类中people类的声明对象分别作为Chinapeople和Americanpeople类对象的上转型对象,并让这个上转型对象调用showname方法。编写一个people类,该类有string类型的成员变量firstname和lastname来存放people对象的...
向上转型经典案例向上转型向上转型应注意的问题向上转型的好处静态方法的调用 经典案例 public class Animal { public void eat(){ System.out.println("animal eatting..."); } } public class Cat extends ...
深入理解Java中向上转型对象体现的多态,以及面向对象思想
2)末尾的()意味着,在对象创建后,立即调用Vehicle类的构造函数,对刚生成的对象进行初始化。构造函数是肯定有的。如果你没写,Java会给你补上一个默认的构造函数。 3) 左边的 “Vehicle veh1”创建了一个Vehicle类...
绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对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 接口...
向上转型static final 接口和抽象类接口 抽象类异常 认 识 Exception 什么是 Throwable 常见的 Exception 与 Exception 有关的 Java 关键字 throws 和 throw try 、finally 、catch 什么是 Error 内部类 创建内部类...
它是基于继承、重写和向上转型等特性实现的,多态是面向对象编程的三大特征之一,其他两个分别是封装和继承。 Java 多态包括以下三种方式 方法重写(Override) 子类可以对从父类继承的方法进行重写,以便根据子类的...
清楚如何通过向上转型(引用的隐式转型),方法重写,运行期绑定来实现多态性。 体会多态性如何使系统可扩展和可维护。 理解运行时判定引用对象的类型(instanceof),进行强制转型(即引用的显示转型...
面向对象三大特征之多态 input可以根据不同的"type"(条件)产生不同形态 ...必须满足向上转型的写法 多态的验证 Fu f=new Zi(); 调用子类中都有重写的那个方法,f.有重写的方法(); 多态的弊端
在方法中引用调用该方法的对象 •在方法里的this 指谁调用就指谁 •注: this 不能用在有static 修饰的方法中. 方法的详解 •方法的所属性 –一旦将一个方法定义在一个类里,如果用static 修饰了,这个方法...