关于方法的重写 Override

本文通过一个简单的Java程序示例介绍了方法覆盖的概念。程序中定义了两个类:Father和Son,其中Son继承自Father,并覆盖了父类的run()方法。运行Son类的实例时,将调用被覆盖的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

public class Override
{
                       public static void main(String[] args)
              {
                       Son son = new Son();
                        son.run();
              }
}

            class Father
       {
                       public void run()
                     {
                                System.out.println("father is running");
                      }
      }
                        class Son extends Father
           {
                public void run()
                    {
                        System.out.println("son is running");
                    }
            }

### 方法重写的基础概念 在面向对象编程中,继承允许子类扩展或修改父类的行为。`override` 关键字用于实现多态性,使派生类能够提供基类方法的新实现[^1]。 ### `override` 的基本语法 当定义一个覆盖的方法时,必须遵循特定的语法规则: ```csharp public class BaseClass { public virtual void MethodToOverride() { Console.WriteLine("Base method"); } } public class DerivedClass : BaseClass { public override void MethodToOverride() { Console.WriteLine("Derived method"); } } ``` 在这个例子中,`MethodToOverride()` 是一个虚拟方法,在 `BaseClass` 中声明并可以在任何继承自它的类里被覆写。为了在 `DerivedClass` 中重新定义此行为,使用了 `override` 关键字来指定这是对基类同名成员的一个新版本。 ### 使用场景举例 假设有一个表示几何形状的抽象基类 Shape 和几个具体的形状如 Circle 或 Rectangle 继承自它。如果希望每个具体类型的面积计算方式不同,则可以创建一个名为 GetArea 的公共虚函数,并让各个子类通过 `override` 来给出各自的实现逻辑。 ```csharp public abstract class Shape { public abstract double GetArea(); } public class Circle : Shape { private readonly double radius; public Circle(double r) => this.radius = r; public override double GetArea() { return Math.PI * radius * radius; } } // Similar implementation would exist for other shapes like Rectangle. ``` 这里展示了如何利用 `abstract` 类型配合 `virtual/override` 实现更灵活的设计模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值