C#笔记⑧——抽象类
一、抽象类
抽象类与接口是有很大区别的。
首先抽象类里至少有一个不完全实现的方法、属性、事件。
而接口是一个全部都完全未实现的方法、属性、事件。
抽象类的属性
如果一个类里面有一个抽象(abstract)的方法,则这个类也要加abstract,这就诞生了一个抽象类。
如果有继承关系,那么父类有抽象类的成员,那么子类必须实现父类所抛出来的方法功能
而抽象类就是为了补充原来未完成的方法,让继承者完成的功能
点击查看代码
class Test
{
static void Main(string[] args)
{
Vehicle car=new Car();
car.Run();
}
}
abstract class Vehicle
{
public void Stop()
{
System.Console.WriteLine("Stopping");
}
public abstract void Run();
}
class Car:Vehicle
{
public override void Run()
{
System.Console.WriteLine("Car is running");
}
}
class Truck:Vehicle
{
public override void Run()
{
System.Console.WriteLine("Trunck is Running");
}
}
纯虚抽象类
里面只有抽象成员,如果继承的子类也是抽象类,则让他也继承这个抽象成员
点击查看代码
class Test
{
static void Main(string[] args)
{
Vehicle car=new Car();
car.Run();
}
}
abstract class VehicleBase
{
public abstract void Run();
public abstract void Stop();
}
abstract class Vehicle:VehicleBase //同为抽象类,则继承
{
public override void Stop()
{
System.Console.WriteLine("Stopping");
}
}
class Car:Vehicle
{
public override void Run()
{
System.Console.WriteLine("Car is running");
}
}
class Truck:Vehicle
{
public override void Run()
{
System.Console.WriteLine("Trunck is Running");
}
}
纯虚抽象类转接口
纯虚抽象类转接口,他们的不同是
接口中不能有public与abstract,子类不能有override
点击查看代码
class Test
{
static void Main(string[] args)
{
Vehicle car=new Car();
car.Run();
}
}
interface VehicleBase
{
void Run();
void Stop();
}
abstract class Vehicle:VehicleBase
{
public void Stop()
{
System.Console.WriteLine("Stopping");
}
public abstract void Run(); //未完成的也可以下推给其他子类
}
class Car:Vehicle
{
public override void Run()
{
System.Console.WriteLine("Car is running");
}
}
class Truck:Vehicle
{
public override void Run()
{
System.Console.WriteLine("Trunck is Running");
}
}

浙公网安备 33010602011771号