51 接口interface
csharp
using System.Diagnostics;
interface IFlyable
{
void Fly();
int MaxALtitude { get; set; }
}
class Bird :IFlyable
{
private int maxAltitude;
public void Fly()
{
Console.WriteLine("鸟在飞");
}
public int MaxALtitude
{
get { return maxAltitude; }
set { maxAltitude = value; }
}
}
public class Aaaa
{
public static void Main()
{
IFlyable bird = new Bird();
bird.Fly();
}
}
一个类可以实现多个接口
密封类 sealed与override 限制
使用sealed的类,不能被继承,可以被实例化,可以继承别的类
csharp
using System.Diagnostics;
class BaseClass
{
public virtual void Method()
{
Console.WriteLine("基类放发");
}
}
class DerivedClass : BaseClass
{
public sealed override void Method()
{
Console.WriteLine("派生类方法");
}
}
class FurtherDerivedClass : DerivedClass
{
public override void Method()//错误
{
Console.WriteLine("进一步派生类方法");
}
}

案例1
csharp
using System.Diagnostics;
using System.Drawing;
namespace aaaa
{
internal class Program
{
static void Main(string[] args)
{
IDrawable[] drawables = new IDrawable[]
{
new Circle("红色",10,20,5.0),
};
}
}
}
csharp
using System;
using System.Collections.Generic;
using System.Text;
namespace aaaa
{
internal class Circle: Shape,IDrawable,ICalculable
{
private double radius;
public Circle(string color, int x,int y,double radius):base (color,x,y)
{
this.radius = radius;
}
public void Draw()
{
Console.WriteLine($"绘制图形:颜色={Color},半径={radius}");
}
public double GetArea()
{
return Math.PI * radius * radius;
}
public double GetPerimeter()
{
return 2 * Math.PI * radius;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"类型:圆,半径:{radius}");
}
}
}
csharp
using System;
using System.Collections.Generic;
using System.Text;
namespace aaaa
{
abstract internal class Shape
{
public string Color { get; set; }
public int X { get; set; }
public int Y { get; set; }
public Shape (string color,int x,int y)
{
Color = color;
X = x;
Y = y;
}
public virtual void DisplayInfo()
{
Console.WriteLine($"颜色:{Color},位置:({X},{Y})");
}
}
}
csharp
using System;
using System.Collections.Generic;
using System.Text;
namespace aaaa
{
internal interface ICalculable
{
double GetArea();
double GetPerimeter();
}
}
csharp
using System;
using System.Collections.Generic;
using System.Text;
namespace aaaa
{
internal interface IDrawable
{
void Draw();
}
}