49.接口和抽象类使用上的区别
49.1 题目
C#中在什么情况下会选择使用接口,什么情况下会选择使用抽象类?
49.2 答案
接口(Interface)
不同对象的共同行为:
- 当你需要定义一组不相关的类具有相同的行为时,使用接口是一个好的选择。接口可以提供一个公共的行为规范,但不涉及具体实现。
// 示例:定义一个接口 public interface IFlyable { void Fly(); } // 不同类实现相同接口 public class Bird : IFlyable { public void Fly() { // 实现飞行行为 } } public class Airplane : IFlyable { public void Fly() { // 实现飞行行为 } }
需要多继承时:
- C#不支持类的多继承,但支持接口的多继承。如果一个类需要继承多个行为规范,可以使用接口。
public interface IWalkable { void Walk(); } public interface ISwimmable { void Swim(); } public class Amphibian : IWalkable, ISwimmable { public void Walk() { // 实现行走行为 } public void Swim() { // 实现游泳行为 } }
抽象类(Abstract Class)
同类对象的共同行为:
- 当你需要定义一组相关的类共享相同的行为和状态时,使用抽象类。抽象类可以提供公共的实现和字段。
// 示例:定义一个抽象类 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() { // 实现猫叫声 } }
共享成员变量:
- 当你需要定义共享的成员变量或方法实现时,可以使用抽象类。抽象类允许定义具体的成员变量和部分实现。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com