抽 象 类 与 接 口 抽象类与接口 抽象类与接口
1.抽象类
抽象类,抽象方法
public abstract class FutureVehicle
{
public abstract void run();
public abstract void fly();
}
抽象类: abstract修饰
抽象方法: abstract修饰,没有方法体
抽象类不可实例化,必须定义子类并实现相应的方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharp基础语法
{
public abstract class Vehicle
{
public abstract void run();
public abstract void fly();
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharp基础语法
{
class Vehicle1 : Vehicle
{
public override void fly()
{
Console.WriteLine("run...");
}
public override void run()
{
Console.WriteLine("fly...");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharp基础语法
{
class Program
{
static void Main(string[] args)
{
Vehicle1 ve = new Vehicle1();
ve.run();
ve.fly();
}
}
}
2.接口
接口,抽象方法
public interface IAudioPlayer
{
void Play(int[] data);
}
注意:接口名要求以大写的Ⅰ开头
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharp基础语法
{
public interface IPlayer
{
void Play(int[] data);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharp基础语法
{
class MjPlayer : IPlayer
{
public void Play(int[] data)
{
Console.WriteLine("di di di ...");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharp基础语法
{
class Program
{
static void Main(string[] args)
{
int[] data = { 0x34,0x12 };
IPlayer player = new MjPlayer();
player.Play(data);
}
}
}
1接口名字要以大写I开头,这是规定
2多继承
一个类可以继承一个父类,和多个接口形如,
class YourClass : Parent, IA,IB, IC {}
3.内部类型
内部类型:在一个类内部,嵌入地定义其他类或接口例如,
public class Example{
public class Item{
}
public interface IPlayer{
}
}
内部类型的全称:命名空闻.外部类名.类名例如:
Af.Example.ItemAf.Example.IPlayer
定义在内部有特别好处吗?
没有
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharp基础语法
{
public class Example
{
// 内部类
public class Item
{
public int id;
public string name;
}
// 内部接口
public interface IPlayer
{
void play(byte[] data);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharp基础语法
{
class Program
{
static void Main(string[] args)
{
CSharp基础语法.Example.Item item = new CSharp基础语法.Example.Item();
item.id = 1314521;
item.name = "major";
}
}
}