多态的三大必要条件(实现):

本文介绍了一个使用多态实现说话内容并记录时间的具体案例。通过定义接口TimeSpeek规范说话行为,利用SpeekOne和SpeekTwo两个具体实现类确定说话内容,并通过GetTime类在输出内容同时记录时间。

多态的三大必要条件(实现):

1.需要有继承(继承类,继承抽象类,实现接口)
2.需要有重写
3.父类型的引用执行子类型

例子:用多态实现说话的同时打印说这句话的时间

思路及代码:

1.由于现在不知道说话的内容太过抽象所以创建接口

  1. public interface TimeSpeek {
  2.        public abstract void getTimeSpeek();
  3. }

2.接口中的方法需要实现所以现在需要创建两个类来确定说话内容

      第一句话

  1. public class SpeekOne implements TimeSpeek {
  2.        @Override
  3.        public void getTimeSpeek() {
  4.               // TODO Auto-generated method stub
  5.               System.out.println("Hello1");
  6.        }
  7. }

       第二句话

  1. public class SpeekTwo implements TimeSpeek {
  2.        @Override
  3.        public void getTimeSpeek() {
  4.               // TODO Auto-generated method stub
  5.               System.out.println("Hello2");
  6.        }
  7. }

3.说话的内容确定后就需要在说话的同时打印时间

  1. import java.util.Date;
  2. public class GetTime {
  3.        public GetTime(TimeSpeek getTimeSpeek) {
  4.               this.getTime(getTimeSpeek);
  5.        }
  6.        public void getTime(TimeSpeek getTimeSpeek) {
  7.               System.out.println("开始时间:" + new Date().getTime());
  8.               getTimeSpeek.getTimeSpeek();
  9.        }
  10. }

4.创建测试类运行

  1. public class Test {
  2.        public static void main(String[] args) {
  3.               SpeekOne so = new SpeekOne();
  4.               SpeekTwo st = new SpeekTwo();
  5.               new GetTime(so);
  6.               new GetTime(st);
  7.        }
  8. }

通过以上步骤得出结果:

开始时间:1565510695244

Hello1

开始时间:1565510695245

Hello2


 

### 面向对象编程中多态的定义 在面向对象编程中,多态指的是允许同一操作作用于不同类型的对象上能够产生不同的执行效果。这种特性使得软件更加灵活和易于扩展[^1]。 具体来说,在代码层面体现为父类定义了一个方法而不去实现它,而是由各个子类根据自身的特性和需求提供具体的实现版本。当这些子类的对象被当作父类类型处理时,调用该方法将会表现出各自独特的行为模式[^3]。 例如: ```typescript class Animal { name: string; constructor(name: string){ this.name = name; } eat(){} } class Dog extends Animal{ eat(){ console.log(`${this.name} 吃狗粮`); } } class Wolf extends Animal{ eat(){ console.log(`${this.name} 吃肉`); } } ``` 在这个例子中,`Animal` 类作为基类提供了 `eat()` 方法但未给出具体实现;而其两个派生类 `Dog` 和 `Wolf` 则分别实现了这个方法以适应各自的进食习惯。这正是多态性的典型应用案例之一。 ### 实现多态的关键要素 要成功实现多态机制,需满足以下几个前提条件: - **存在继承关系**:即必须有一个或多个类是从另一个共同的超类派生出来的。只有在这种情况下才能利用父类引用指向实际创建的不同子类实例,并借此触发相应的方法重写逻辑。 - **具有虚函数/抽象方法支持**:对于 C++ 或 Java 这样的强类型语言而言,通常会在基类里声明带有特定修饰符(如 virtual 关键字)的方法以便后续能够在子类内对其进行覆盖替换。而在 TypeScript 中,则可通过定义接口或者使用 abstract 关键词达到相似的效果[^4]。 综上所述,多态不仅增强了程序结构上的灵活性与可维护性,同时也促进了组件间的解耦合度提升,从而降低了修改一处功能可能带来的连锁反应风险[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值