1.接口 定义接口是为了统一标准,关键字interface。
定义接口时,接口名前要加大写字母I,例如
interface Ijiekou
{
string fangfa(); //没有方法体的方法
}
2. (1)接口内的方法没有方法体,没有修饰符,不实现。
(2)接口也有传递性,不能被实例化,不能写带方法体的方法。
(3)普通类继承接口必须实现其未实现的方法,接口继承接口可以不实现其方法,抽象类不能继承接口。
(4)普通类可以继承多个接口。
3.接口与抽象类的异同
抽象类 | 接口 | |
异 | 用abstract定义 | 用interface定义 |
只能继承一个类 | 可以继承多个接口 | |
非抽象派生类必须实现抽象方法 | 继承接口的类必须实现所有方法 | |
需要override关键字 | 直接实现 | |
可以写有方法体的方法 | 不能写有方法体的方法 | |
同 | 1.都不能被实例化 | |
2.包含未实现的方法 | ||
3.派生类必须实现未实现的方法 |
4.接口作为参数传递,传递的是实现接口的对象;接口作为返回类型返回,返回的也是实现接口的对象。
1 public class A 2 { 3 interface Ijiekou() //定义接口Ijiekou 4 { 5 int Num(); 6 } 7 } 8 9 public class B : Ijiekou //B类继承接口Ijiekou 10 { 11 public int a 12 { 13 public int Num() 14 { 15 return 1; 16 } 17 }
1 static void Main(string[] args) 2 { 3 Ijiekou J = new B(); //接口实例化B类 4 A.x = new A(); //实例化类 5 x.chuancan(J); //把J传进chuancan类里 6 } 7 public int chuancan(Ijiekou i) // 这里是把接口作为参数使用的 8 { 9 Console.WriteLine(i.Num) //输出B类中的a方法的返回值 10 }
1 static void Main(string[] args) 2 { 3 Ijiekou J =new B(); 4 Console.WriteLine(J.fanhui.Num); 5 } 6 public Ijiekou fanhui() //这里是把接口作为返回类型的 7 { 8 Ijiekou JJ = new B(); 9 return JJ; 10 } 11 }
时间: 2024-07-31 00:40:23