消息
消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。发送给一个对象的消息定义了一个方法名和一个参数表(可能是空的),并指定某一个对象。对象接收的消息则调用消息中指定的方法,并将形式参数与参数表中相应的值结合起来。如有两个类分别是教练和运动员,代码如下:
//教练类
public class Coach {
private Sportsman sportsman = new Sportsman();
public void command() {
sportsman.action("百米");
}
}
//运动员
public class Sportsman {
public void action(String item){
System.out.print(item + "米冲刺");
}
}
action(String item) 就是消息单元,包括方法名和参数列表。教练(Coach )就是消息发送对象,将该消息发送给运动员;运动员(Sportsman )就是消息接收对象,它包含一个叫aciton的执行方法,将消息名和其参数结合起来进行执行。
多态的概念
多态就是同一消息发送给不同对象,可以得到不同的响应即为多态,即同一消息可以根据发送的对象的不同而采用多种不同的行为方式。接上述示例,如果教练将消息action(String item)发送给歌唱家,则执行结果为不是跑步而是唱歌。
public class Singer {
public void action(String item){
System.out.print(item + "唱起来");
}
}
如何实现多态
实现多态由接口实现 、继承父类重写方法、同一类中进行方法重载三种方式实现
- 接口实现
public interface Man {
void action();
}
public class Singer implements Man {
public void action(){
System.out.print("唱起来");
}
}
public class Sportsman implements Man {
public void action(){
System.out.print("百米冲刺");
}
}
public class Coach {
private Man man ;
public Coach(Man aMan){
man = aMan;
}
public void command() {
man.action();
}
}
使用接口可以实现教练可以给运动员,也可以给歌唱家发送同样消息,实现多态。
- 继承父类重写方法(Override)
public class Actor {
public void play(){
System.out.print("表演");
}
}
public class OperaSinger extends Actor {
public void play(){
System.out.print("戏曲表演");
}
}
OperaSinger是Actor子类,并重置了父类play()的方法,实现了将 play()消息发送给Actor、OperaSinger实现不同的执行方法实现多态。
- 同一类中进行方法重载(Overload)
public class Singer implements Man {
public void action(){
System.out.print("唱起来");
}
public void action(Erhu erhu){
System.out.print("二胡拉起来");
}
public void action(Piano piano){
System.out.print("钢琴弹起来");
}
}
在Singer 类中有三个方法名(action)一样,但参数不同,实现执行内容不同,实现多态
优点
面向对象技术因多态而生动多变,实现可扩展性和易维护两大目标,主要体现在以下几点:
- 可替换性:多态对已存在代码具有可替换性.
- 可扩充性:增加新的子类不影响已经存在的类结构.
- 接口性:多态是超类通过方法签名,向子类提供一个公共接口,由子类来完善或者重写它来实现的.
- 代码更加灵活性和简单.
本文探讨了多态在面向对象编程中的关键作用,通过实例展示了如何通过接口、继承和方法重载实现多态,并阐述其在代码灵活性和扩展性方面的益处。

1357

被折叠的 条评论
为什么被折叠?



