C# 【OOP(面向对象编程)教程】:第五章:继承与多态

1. 继承的概念

继承是面向对象编程的一种机制,允许一个类从另一个类获取属性和方法,从而实现代码复用和层次化结构。

  • 继承的基本概念
    • 基类(父类或超类):提供属性和方法的类。
    • 派生类(子类):从基类继承的类,能够添加新的属性和方法或重写基类的方法。
2. 基类与派生类
  • 基类的定义

    public class Animal {
        public string Name { get; set; }
    
        public void Eat() {
            Console.WriteLine($"{Name} is eating.");
        }
    }
    
  • 派生类的定义

    public class Dog : Animal {
        public void Bark() {
            Console.WriteLine($"{Name} is barking.");
        }
    }
    
  • 使用派生类

    Dog myDog = new Dog();
    myDog.Name = "Buddy";
    myDog.Eat(); // 输出:Buddy is eating.
    myDog.Bark(); // 输出:Buddy is barking.
    

在这个例子中,Dog 类继承了 Animal 类的属性 Name 和方法 Eat,并且添加了新的方法 Bark

3. 方法重写(override)

方法重写允许派生类提供基类方法的具体实现。使用 override 关键字重写基类方法。

  • 基类中的虚方法

    public class Animal {
        public string Name { get; set; }
    
        public virtual void MakeSound() {
            Console.WriteLine("Animal makes a sound.");
        }
    }
    
  • 派生类中重写方法

    public class Dog : Animal {
        public override void MakeSound() {
            Console.WriteLine("Dog barks.");
        }
    }
    
  • 使用重写方法

    Dog myDog = new Dog();
    myDog.Name = "Buddy";
    myDog.MakeSound(); // 输出:Dog barks.
    

在这个例子中,Dog 类重写了 Animal 类中的 MakeSound 方法。

4. 多态与虚方法(virtual)

多态性是面向对象编程的重要特性,允许在不同类中定义相同的方法并以不同的方式实现。多态性通过基类引用指向派生类对象,并调用重写的方法。

  • 使用虚方法

    public class Animal {
        public string Name { get; set; }
    
        public virtual void MakeSound() {
            Console.WriteLine("Animal makes a sound.");
        }
    }
    
    public class Dog : Animal {
        public override void MakeSound() {
            Console.WriteLine("Dog barks.");
        }
    }
    
    public class Cat : Animal {
        public override void MakeSound() {
            Console.WriteLine("Cat meows.");
        }
    }
    
  • 实现多态性

    Animal myAnimal;
    
    myAnimal = new Dog();
    myAnimal.MakeSound(); // 输出:Dog barks.
    
    myAnimal = new Cat();
    myAnimal.MakeSound(); // 输出:Cat meows.
    

通过将基类引用(Animal myAnimal)指向不同的派生类对象(DogCat),调用 MakeSound 方法时表现出不同的行为。

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风不归Alkaid

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值