[public] interface I…able
    {
    成员;
    }
    image.png
    接口与接口直接可以继承,并且可以多继承。
    接口不能继承一个类,类可以继承接口。
    实现接口的子类,必须实现该接口的全部成员

    1. using System;
    2. namespace _092_多态之接口
    3. {
    4. class Program
    5. {
    6. static void Main(string[] args)
    7. {
    8. //接口就是一个规范(都能用,广泛普遍性),能力
    9. Student s = new Student();
    10. s.Live();
    11. s.KouLan();
    12. s.Fly();
    13. Console.ReadKey();
    14. }
    15. }
    16. }
    17. using System;
    18. using System.Collections.Generic;
    19. using System.Text;
    20. namespace _092_多态之接口
    21. {
    22. class Person
    23. {
    24. public void Live()
    25. {
    26. Console.WriteLine("我是人,我可以吃喝拉撒睡");
    27. }
    28. }
    29. }
    30. using System;
    31. using System.Collections.Generic;
    32. using System.Text;
    33. namespace _092_多态之接口
    34. {
    35. class Student : Person, IKouLanable,IFlyable
    36. {
    37. public string Name { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
    38. public void Fly()
    39. {
    40. Console.WriteLine("我tm会飞");
    41. }
    42. public void KouLan()
    43. {
    44. Console.WriteLine("我也可以扣篮");
    45. }
    46. public string Test()
    47. {
    48. throw new NotImplementedException();
    49. }
    50. }
    51. }
    52. using System;
    53. using System.Collections.Generic;
    54. using System.Text;
    55. namespace _092_多态之接口
    56. {
    57. interface IKouLanable
    58. {
    59. void KouLan();
    60. }
    61. }
    62. using System;
    63. using System.Collections.Generic;
    64. using System.Text;
    65. namespace _092_多态之接口
    66. {
    67. interface IFlyable //接口可以有 属性、方法、索引器(本质全是方法)
    68. {
    69. //接口中的成员不允许添加访问修饰符,默认就是public
    70. void Fly();
    71. string Test();
    72. public static void TestTwo()
    73. {
    74. Console.WriteLine("我是接口中的方法体");
    75. }
    76. //string _name;//接口中不能包含实例字段
    77. string Name
    78. {
    79. get;
    80. set;
    81. }
    82. }
    83. }

    接口练习

    1. using System;
    2. namespace _094_接口练习
    3. {
    4. class Program
    5. {
    6. static void Main(string[] args)
    7. {
    8. //真的鸭子嘎嘎叫,橡皮鸭子唧唧叫,木头鸭子吱吱叫;真鸭子会游泳,橡皮鸭子靠发动机游泳,木头鸭子不会
    9. RealDuck rd = new WoodenDuck(); //木鸭子不会游泳,但是继承了父类 //new RealDuck();
    10. rd.Bark();
    11. rd.Swim();
    12. Swimming s = new RubberDuck();
    13. s.Swim();
    14. Console.ReadKey();
    15. }
    16. }
    17. }
    18. using System;
    19. using System.Collections.Generic;
    20. using System.Text;
    21. namespace _094_接口练习
    22. {
    23. class RealDuck:Swimming
    24. {
    25. public virtual void Bark()
    26. {
    27. Console.WriteLine("真的鸭子嘎嘎叫");
    28. }
    29. public void Swim()
    30. {
    31. Console.WriteLine("真鸭子会游泳");
    32. }
    33. }
    34. }
    35. using System;
    36. using System.Collections.Generic;
    37. using System.Text;
    38. namespace _094_接口练习
    39. {
    40. class RubberDuck:RealDuck,Swimming
    41. {
    42. public override void Bark()
    43. {
    44. Console.WriteLine("橡皮鸭子唧唧叫");
    45. }
    46. public void Swim()
    47. {
    48. Console.WriteLine("橡皮鸭子靠着发动机游泳");
    49. }
    50. }
    51. }
    52. using System;
    53. using System.Collections.Generic;
    54. using System.Text;
    55. namespace _094_接口练习
    56. {
    57. class WoodenDuck:RealDuck
    58. {
    59. public override void Bark()
    60. {
    61. Console.WriteLine("木头鸭子吱吱叫");
    62. }
    63. }
    64. }
    65. using System;
    66. using System.Collections.Generic;
    67. using System.Text;
    68. namespace _094_接口练习
    69. {
    70. interface Swimming
    71. {
    72. void Swim();
    73. }
    74. }