自己比较懒,上次面试遇到这个问题,回来查了下。网上查了,大概有这两种例子。
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
例如,可能会有一个"Shape"抽象类,包含抽象方法"draw()",然后有"Circle"和"Square"类继承自"Shape",分别实现各自的绘制方法,展示继承和多态性。 其次,Java的异常处理是另一个重要的知识点。实验例子可能包含了...
Java面向对象编程的核心概念之一是继承性和多态性。继承性允许子类继承父类的属性和行为,以此实现代码的复用和类的层次结构。在Java中,所有类都默认继承自`java.lang.Object`类。创建派生类(子类)时,可以使用`...
Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制,下面就继承和接口实现两方面谈谈java运行时多态性的实现。 一、通过继承中超类对象引用变量引用子类对象来实现 举例...
此外,内部类可以声明为抽象类,允许其他内部类或外部类继承,这进一步扩展了Java的多态性。值得注意的是,与外围类不同,内部类还可以声明为`private`或`protected`,提供更细粒度的访问控制。 #### 三、枚举类型...
- **JAVA**:同样支持继承和多态性,但一个类只能继承一个父类,可以通过接口(interface)来实现多重继承的效果。 #### 九、继承 - **C++**:支持单继承和多继承,即一个类可以从多个基类派生。 - **JAVA**:只支持...
在Java编程语言中,函数重载(Overloading)和覆盖(Overriding)是面向对象特性的重要组成部分,它们分别处理多态性中的静态多态和动态多态。本篇将通过一个具体的例子,深入探讨这两个概念。 函数重载是指在同一...
在实际开发中,我们可能遇到多态性,接口,抽象类等复杂情况。例如,如果`MyClass`继承自另一个类或实现了一个接口,那么在实例化`MyClass`时,也会涉及父类的构造器调用和接口的实现。 此外,Java还提供了匿名内部...
Java中的多态性是面向对象编程的一个核心特性,它允许我们使用一个接口来表示多种不同的类型,从而提高代码的灵活性和可复用性。多态性主要体现在两个方面:编译时多态性和运行时多态性。 1. **编译时多态性**:在...
这个简单的示例展示了接口在Java中的基本用法,特别是在多态性和面向接口编程中的作用。在Android开发中,接口常用于Activity与Fragment、Adapter与ListView、服务与Activity之间的通信,如OnClickListener、...
在Java核心概念中,面试官可能会询问关于数据类型、类与对象、封装、继承、多态性等基础知识。例如,会问到如何实现抽象类和接口的区别,以及何时选择哪种方式。此外,异常处理、垃圾收集机制、字符串池的概念也是常...
Java的三个主要特征是封装、继承和多态性。封装使得数据和方法结合在一起,形成一个独立的单元,保护数据不被非法访问。继承则允许创建新类时重用现有类的功能,提高代码的复用性。多态性则允许不同的对象对同一消息...
4. 并发问题:线程安全是Java并发编程的核心,理解synchronized、volatile和Atomic类的使用可以避免竞态条件和死锁。 5. 类加载器:不恰当的类加载可能导致类冲突,理解双亲委派模型有助于避免这类问题。 二、Java...
在Java编程语言中,多...同时,理解并掌握这些同步机制的原理和使用场景,对于提升Java多线程编程的能力至关重要。在实际开发中,要特别注意死锁、活锁和饥饿等问题,避免因线程同步不当而导致的性能下降或程序错误。
请举一个例子说明什么叫做“多态性”。 6。this和super各有什么含义? 7。试说明父类对象和子类对象的转换规则。 8。什么叫做默认构造函数? 9。在什么时候需要用到显式字段初始化? 10。如何在一个构造函数中...
4、在系统的设计中,要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。 5、该系统的要求: (1)显示信息:用户可以向前翻页查询前一个月的日期,也可以向后翻页查询下一个月的日期。 (2)定时提醒:...
多态性是指同一种行为或操作可以应用于不同的对象,并产生不同的效果。在Java等面向对象语言中,多态分为编译时多态(静态多态)和运行时多态(动态多态)。编译时多态主要通过方法重载(Overloading)实现,而运行...
深入理解类的构造器、访问修饰符、抽象类与接口的区别、以及如何实现多态性至关重要。 3. **集合框架**:Java集合框架包括List、Set、Queue和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。面试...