- 使用interface关键字定义接口
- 接口定义一组成员但不直接实现它们
- 实现接口
- 实现接口的任何类都必须实现其所有的成员方法
- 接口不能直接实例化
- 接口可以包含方法和属性声明,不能包含字段
- 接口中所有属性和方法默认为public
- 一个子类可以继承一个父类的同时,实现多个接口
-
1 using System; 2 3 namespace InterfaceDemo 4 { 5 //食物接口 6 public interface Food 7 { 8 //在接口中定义属性,属性也不能实现 9 float price { set; get; } 10 11 //在接口中,定义方法 12 //1. 不能添加访问修饰符,默认都是public 13 //2. 在接口中的方法不能实现 14 void Eat(); 15 } 16 public interface B 17 { 18 19 } 20 //苹果类 21 //Apple继承于A类,并且实现了Food接口和B接口 22 //3. 一旦某个类实现了接口,就必须实现接口中定义的全部成员 23 public class Apple : Food, B 24 { 25 public float price 26 { 27 get 28 { 29 return 1.5f; 30 } 31 set 32 { 33 this.price = value; 34 } 35 } 36 //实现了 Food 接口中的 Eat 方法 37 public void Eat() 38 { 39 Console.WriteLine("吃下苹果后,hp + 10"); 40 } 41 } 42 43 public class Banana : Food, B 44 { 45 public float price 46 { 47 get 48 { 49 return 3.8f; 50 } 51 set 52 { 53 this.price = value; 54 } 55 } 56 //实现了 Food 接口中的 Eat 方法 57 public void Eat() 58 { 59 Console.WriteLine("吃下香蕉后,hp + 12"); 60 } 61 } 62 class Program 63 { 64 static void Main(string[] args) 65 { 66 Apple a = new Apple(); 67 a.Eat(); 68 69 Console.WriteLine(a.price); 70 71 //多态--使用接口实现的多态 72 Food b = new Apple(); 73 b.Eat(); 74 75 76 Banana ba = new Banana(); 77 ba.Eat(); 78 Console.WriteLine(ba.price); 79 //4. 不能够直接实例化接口 80 //Food f = new Food(); 81 } 82 } 83 }
时间: 2024-11-08 18:58:58