interface
关键字定义。abstract
关键字定义,并且不能直接实例化。:
关键字后跟接口名称列表并使用implements
关键字(在C#中只需:
即可)。public class MyClass : IMyInterface1, IMyInterface2
{
// 实现接口的方法...
}
:
关键字。public abstract class MyBaseClass
{
public abstract void AbstractMethod();
public void ConcreteMethod() { ... } // 具体方法
}
public class MyDerivedClass : MyBaseClass
{
public override void AbstractMethod() {...} // 必须实现抽象方法
}
假设有一个动物王国,需要定义飞翔、游泳、奔跑的行为,这时可以用接口来描述这些行为:
interface IFlyable
{
void Fly();
}
interface ISwimable
{
void Swim();
}
interface IRunable
{
void Run(int distance);
}
class Bird : IFlyable, IRunable
{
public void Fly() {...}
public void Run(int distance) {...}
}
class Fish : ISwimable
{
public void Swim() {...}
}
这里,Bird
和Fish
各自实现了符合其特性的接口。
在动物园管理系统中,所有的动物都有名字和年龄,但具体的喂养方式可能因动物种类不同而异,此时可以使用抽象类:
abstract class Animal
{
public string Name { get; set; }
public int Age { get; set; }
public abstract void Feed(); // 抽象方法,由子类实现
protected void Log(string message) // 共享的具体方法
{
Console.WriteLine($"Animal: {Name}, Action: {message}");
}
}
class Lion : Animal
{
public override void Feed()
{
Log("Fed with meat");
}
}
class Giraffe : Animal
{
public override void Feed()
{
Log("Fed with leaves");
}
}
这里,Animal
抽象类提供了通用属性和一个抽象方法Feed
,各个具体动物类如Lion
和Giraffe
根据自身特点实现了Feed
方法。
python推荐学习汇总连接:
50个开发必备的Python经典脚本(1-10)
50个开发必备的Python经典脚本(41-50)
————————————————
?最后我们放松一下眼睛