虚方法的定义和使用

虚方法是在面向对象编程中的一个概念,是继承和多态性的基础,用来描述能够被子类重写(override)的方法。这使得在子类对象上调用这个方法时,实际执行的是子类中重写的方法。

虚方法的存在意味着在编译时无法确定应该调用哪个方法,而是在运行时根据对象的实际类型来确定。这种多态性的特性使得程序更加灵活和可扩展。

如何定义虚方法:

在C++中,通过在函数声明前加上virtual关键字来声明一个虚方法,在子类中可以使用override关键字来重写。

在C#和Java中,所有非静态的方法都默认是虚方法(隐式声明),也可以使用virtual关键字来显式声明虚方法(好处是增加代码的可读性和可维护性),在子类中可以使用override关键字来重写。

虚方法的定义和使用范例(C#):实现多态的过程

using System;

//定义父类Animal
class Animal
{
    //用关键词virtual声明虚方法 
    public virtual void MakeSound()
    {
        Console.WriteLine("Animal makes a sound");
    }
}

//定义子类Dog 继承父类 Animal
class Dog : Animal
{
    //用关键词override 重写父类虚方法
    public override void MakeSound()
    {
        Console.WriteLine("Dog barks");
    }
}

//定义子类Cat 继承父类 Animal
class Cat : Animal
{
    //用关键词override 重写父类虚方法
    public override void MakeSound()
    {
        Console.WriteLine("Cat meows");
    }
}

class Program
{
    static void Main(string[] args)
    {
        Animal animal = new Animal(); //创建Animal对象
        animal.MakeSound(); // 输出: "Animal makes a sound"

        Animal dog = new Dog(); //创建Dog对象,执行Dog类中重写的方法
        dog.MakeSound(); // 输出: "Dog barks"

        Animal cat = new Cat();  //创建Cat对象,执行Cat类中重写的方法
        cat.MakeSound(); // 输出: "Cat meows"
    }
}

 向上转型写法: Animal dog = new Dog(); 

  将一个派生类的实例(Dog对象)赋值给一个基类的变量(Animal对象),这种写法可以将多个不同的子类对象统一当作基类处理,能够更通用地处理对象,也可以方便地扩展和使用多态性的特点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值