c#中的接口,根据自己的理解接口就是你自己定义了一个方法,但是这个这个方法没有任何的内容,是空的他需要你继承后自己来写这个方法具体是干什么的,但是你写的方法必须按照你接口里面的定义的方法名字和规范来写,并且你如果继承了这个接口你就必须实现他里面的这一个方法
接口的定义是在前面加上interface接口的访问修饰符是默认的pubic,并且只能是这个,一般情况下不需要写,抽象类和接口的区别大概是接口更像一个任务,如果你继承了你就必须要求完成,但是具体怎么样完成还是看你自己,并且接与接口之间是可以相互继承的
using System;
namespace _2022_7_14_jk
{
interface jk
{
void jkfa();
}
interface jka:jk
{
void jkfaa();
}
class jcjk:jka
{
public void jkfa()
{
Console.WriteLine("接口一的方法");
}
public void jkfaa()
{
Console.WriteLine("接口二的方法");
}
}
class Program
{
static void Main(string[] args)
{
jcjk jcjka = new jcjk();
jcjka.jkfa();
jcjka.jkfaa();
}
}
}
上面我们就可以看到接口之间的相互继承,和我们如果有一个类继承了接口就必须要将接口里面的方法实现才可以这就是一个必要的条件,
c#的命名空间:其实如果我们学习过unity的同学就可以知道,命名空间像是一个板块,你引入了以后就可以直接调用这个命名空间里的东西,你不同的命名空间里即使有同样的的方法和对象,也不会影响的,命名空间在前面加上 namespace 就可以了
using System;
namespace _2022_7_14_mmkj
{
class Program
{
static void Main(string[] args)
{
Mmkj.MmkJ_a mmkJ_ = new Mmkj.MmkJ_a();
Mmkja.Mmkj_a mmkj_A = new Mmkja.Mmkj_a();
mmkJ_.Fangfaa();
mmkj_A.Fangfaa();
Console.ReadKey();
}
}
}
namespace Mmkj
{
class MmkJ_a
{
public void Fangfaa()
{
Console.WriteLine("这是命名空间一里的方法");
}
}
}
namespace Mmkja
{
class Mmkj_a
{
public void Fangfaa()
{
Console.WriteLine("这是命名空间二的方法");
}
}
}
上面我们就可以看到我们命名空间的一个特点,在不同的命名空间里他们的方法即使是名称相同也不会互相影响的,命名空间里还有一个关键字using用过unity的同学对这个肯定也不行陌生在代码里使用using然后加上命名空间就可以在运用的时候不需要在写一次命名空间的名字,
using System;
using Mmkj;
using Mmkja;
namespace _2022_7_14_mmkj
{
class Program
{
static void Main(string[] args)
{
MmkJ_a mmkJ_ = new MmkJ_a();
Mmkj_a mmkj_A = new Mmkj_a();
mmkJ_.Fangfaa();
mmkj_A.Fangfaa();
Console.ReadKey();
}
}
}
namespace Mmkj
{
class MmkJ_a
{
public void Fangfaa()
{
Console.WriteLine("这是命名空间一里的方法");
}
}
}
namespace Mmkja
{
class Mmkj_a
{
public void Fangfaa()
{
Console.WriteLine("这是命名空间二的方法");
}
}
}
我们在上面用using命名空间指令就不用在前面加上我命名空间的名字在写的时候会方便很很多
我们的命名空间还有一种特性就是 命名空间是可以相互嵌套的,在一个命名空里再写上其他的命名空间我们用(.)就可以访问我们嵌套的命名空间里的成员
using System;
using Mmkj;
namespace _2022_7_14_mmkj
{
class Program
{
static void Main(string[] args)
{
MmkJ_a mmkJ_A = new MmkJ_a();
mmkJ_A.Fangfaa();
}
}
}
namespace Mmkj
{
class MmkJ_a
{
public void Fangfaa()
{
Console.WriteLine("这是命名空间一的方法");
Mmkja.Mmkj_a.Fangfaa();
}
}
namespace Mmkja
{
class Mmkj_a
{
public static void Fangfaa()
{
Console.WriteLine("这是命名空间二的方法");
}
}
}
}
这里我们就可以看到嵌套的命名空间直接使用(.)直接访问,并且在我们嵌套的命名空间里的方法如果和我们大的命名空间里的方法命一样我们就要修改其方法名字或者加上static 来区分两个方法