49.接口和抽象类使用上的区别

  1. 49.接口和抽象类使用上的区别
    1. 49.1 题目
    2. 49.2 答案
      1. 接口(Interface)
      2. 抽象类(Abstract Class)

49.接口和抽象类使用上的区别


49.1 题目

C#中在什么情况下会选择使用接口,什么情况下会选择使用抽象类?


49.2 答案

接口(Interface)

  1. 不同对象的共同行为

    • 当你需要定义一组不相关的类具有相同的行为时,使用接口是一个好的选择。接口可以提供一个公共的行为规范,但不涉及具体实现。
    // 示例:定义一个接口
    public interface IFlyable
    {
        void Fly();
    }
    
    // 不同类实现相同接口
    public class Bird : IFlyable
    {
        public void Fly()
        {
            // 实现飞行行为
        }
    }
    
    public class Airplane : IFlyable
    {
        public void Fly()
        {
            // 实现飞行行为
        }
    }
    
  2. 需要多继承时

    • C#不支持类的多继承,但支持接口的多继承。如果一个类需要继承多个行为规范,可以使用接口。
    public interface IWalkable
    {
        void Walk();
    }
    
    public interface ISwimmable
    {
        void Swim();
    }
    
    public class Amphibian : IWalkable, ISwimmable
    {
        public void Walk()
        {
            // 实现行走行为
        }
    
        public void Swim()
        {
            // 实现游泳行为
        }
    }
    

抽象类(Abstract Class)

  1. 同类对象的共同行为

    • 当你需要定义一组相关的类共享相同的行为和状态时,使用抽象类。抽象类可以提供公共的实现和字段。
    // 示例:定义一个抽象类
    public abstract class Animal
    {
        protected string name;
    
        public Animal(string name)
        {
            this.name = name;
        }
    
        public abstract void MakeSound();
    }
    
    public class Dog : Animal
    {
        public Dog(string name) : base(name) { }
    
        public override void MakeSound()
        {
            // 实现狗叫声
        }
    }
    
    public class Cat : Animal
    {
        public Cat(string name) : base(name) { }
    
        public override void MakeSound()
        {
            // 实现猫叫声
        }
    }
    
  2. 共享成员变量

    • 当你需要定义共享的成员变量或方法实现时,可以使用抽象类。抽象类允许定义具体的成员变量和部分实现。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏