自己比较懒,上次面试遇到这个问题,回来查了下。网上查了,大概有这两种例子。
1.一种是普通的超类,子类覆盖父类的方法。
2.父类是抽象类,子类实现父类的抽象方法。
1.网上摘抄:
Game类是Football、Basketball、Popolong的父类,Games类使用前面4个类。
Java根据动态绑定决定执行“更具体”的方法,即子类方法。
-
-
-
package
cn.edu.uibe.oop;
-
-
public
class
Game {
-
protected
void
play(){
-
System.out.println(
"play game"
);
-
}
-
-
}
-
-
-
-
package
cn.edu.uibe.oop;
-
-
public
class
Football
extends
Game {
-
-
protected
void
play() {
-
System.out.println(
"play football"
);
-
super
.play();
-
}
-
void
f(){
-
play();
-
}
-
}
-
-
-
-
-
-
package
cn.edu.uibe.oop;
-
-
public
class
Basketball
extends
Game{
-
-
protected
void
play() {
-
System.out.println(
"play basketball"
);
-
}
-
}
-
-
-
-
-
-
package
cn.edu.uibe.oop;
-
-
public
class
Popolong
extends
Game {
-
-
protected
void
play() {
-
System.out.println(
"play popolong"
);
-
}
-
-
}
-
-
-
-
-
package
cn.edu.uibe.oop;
-
-
public
class
Games {
-
-
public
static
void
main(String[] args) {
-
Game[] games =
new
Game[
10
];
-
games[
0
] =
new
Basketball();
-
games[
1
] =
new
Football();
-
games[
2
] =
new
Popolong();
-
-
for
(
int
i=
0
;i<games.length;i++){
-
if
(games[i]!=
null
)
-
games[i].play();
-
}
-
-
}
-
-
}
2.from network
如在计算公司雇员工资的超类中
// 用抽象方法作为多态接口
public abstract class Employee {
...
public abstract double earnings(); //定义抽象方法作为多态接口
}
//这个方法将作为多态接口被子类的方法所覆盖
public class Manager extends Employee {
...
public double eamings () return 0.0;
抽象方法也可用protected.
-
public
class
CircleShapeApp{
-
public
static
void
main(String[] args) {
-
Circle circle =
new
Circle(
12.98
);
-
Sphere sphere =
new
Sphere(
25.55
);
-
-
Shape shape = circle;
-
-
shape.computeArea();
-
shape.computeVolume();
-
System.out.println(
"circle area: "
+ shape.getArea());
-
System.out.println(
"circle volume: "
+ shape.getVolume());
-
-
shape = sphere;
-
shape.computeArea();
-
shape.computeVolume();
-
System.out.println(
"Sphere area: "
+ shape.getArea());
-
System.out.println(
"Sphere volume: "
+ shape.getVolume());
-
}
-
}
分享到:
相关推荐
计算机后端-Java-Java核心基础-第13章 面向对象05 18. 多态性使用举例.avi
Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制,下面就继承和接口实现两方面谈谈java运行时多态性的实现。 一、通过继承中超类对象引用变量引用子类对象来实现 举例...
4、在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。 5、该系统的要求: (1)显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。 (2)定时提醒:...
请举一个例子说明什么叫做“多态性”。 6。this和super各有什么含义? 7。试说明父类对象和子类对象的转换规则。 8。什么叫做默认构造函数? 9。在什么时候需要用到显式字段初始化? 10。如何在一个构造函数中...
谈谈java多线程 23.谈谈文件加密技术 24.软件开发生命周期 25.路由协议种类及特点 26.java的awt和swing组件的GUI设计的关键 27.对于java流的认识 28.简单描述一下awt与swing区别。 29.简述java编程中事件处理...
9.1 多态性概念 9.2 重载 9.2.1 重载概念 9.2.2 重载注意事项 9.3 覆盖 9.3.1 覆盖概念 9.3.2 覆盖与访问权限 9.3.3 静态方法覆盖 9.3.4 覆盖与异常抛出 9.3.5 抽象方法覆盖 9.3.6 覆盖与重载 9.4 静态...
5.7.1 多态性 151 5.7.2 引用变量的强制类型转换 152 5.7.3 instanceof运算符 154 5.8 继承与组合 154 5.8.1 使用继承的注意点 155 5.8.2 利用组合实现复用 156 学生提问:使用组合关系来实现复用时,需要创建...
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数...
Java程序.............................................................................................6 1.3.1 Java程序的结构 ...........................................................................
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和...
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数...
10.2.4 多态性函数 161 10.2.5 在类中定义类 162 10.2.6 引用:所指的值就是我的数据 165 10.2.7 有用的类函数 166 10.3 总结 166 第11章 中场三:生成HTML模块 168 11.1 HTML类的设计目的 168 11.2 生成一个基类 ...
10.6 实例研究:利用多态性的工资单系统 10.7 新类和动态关联 10.8 虚析构函数 10.9 实例研究:继承接口和实现 10.10 多态、虚函数和动态关联 小结 术语 自测练习 自测练习答案 练习 第11章 C++输入/输出流 ...
10.6 实例研究:利用多态性的工资单系统 10.7 新类和动态关联 10.8 虚析构函数 10.9 实例研究:继承接口和实现 10.10 多态、虚函数和动态关联 小结 术语 自测练习 自测练习答案 练习 第11章 C++输入/输出流 ...
9.2.8 多态性 245 9.2.9 标准库的差异 245 9.2.10 动态内存分配 245 9.3 优雅的C++ 246 9.3.1 消失了的宏 247 9.3.2 const修饰及类型转换 248 9.3.3 隐藏实现 248 9.3.4 引用而非指针 250 9.3.5 名字空间 250 9.4 ...
9.2.8 多态性 245 9.2.9 标准库的差异 245 9.2.10 动态内存分配 245 9.3 优雅的C++ 246 9.3.1 消失了的宏 247 9.3.2 const修饰及类型转换 248 9.3.3 隐藏实现 248 9.3.4 引用而非指针 250 9.3.5 名字空间 250 9.4 ...
1.9 Java、Internet与万维网--------------------------------------------7 1.10 其它高级语言------------------------------------------------------8 1.11 结构化编程-----------------------------------...