c# 8.0中 接口可以默认实现
今天无意中发现,接口中写了方法实现后没有报错,于是百度查询了一下,原来新版的C#可以有接口默认实现了,特地记录一下
这样就避免了,给接口增加方法时,需要将“每一个继承这个接口的类”重写该方法,
具有默认实现的接口方法,继承接口的类(非抽象类)如果没有重写该方法编译不会报错。
不具备默认实现的接口方法,继承接口的类(非抽象类)如果没有重写该方法编译会报错。(和以前一样)
using System;namespace InterfaceDemo
{class Program{static void Main(string[] args){Console.WriteLine("Hello World!");IMyInterface human = new Human(); IMyInterface man = new Man();IMyInterface woman = new Woman();human.Run();man.Run(); //会调用接口中的默认方法实现woman.Run(); //会调用接口中的默认方法实现human.Eat();man.Eat();woman.Eat();Console.WriteLine("==============================");Human human1 = new Human();Man man1 = new Man();Woman woman1 = new Woman();human1.Run();//man1.Run(); 未定义该方法,因为没有在类中重写该方法//woman1.Run(); 未定义该方法,因为没有在类中重写该方法human1.Eat();man1.Eat();woman1.Eat();}}interface IMyInterface{void Eat(); //一起版本的接口方法,只能定义不能实现void Run() => Console.WriteLine("你没有在类中重写该接口的方法"); //c# 8.0中,可以使用接口默认实现方法}class Human:IMyInterface{public void Name(){Console.WriteLine("人类");}public void Run(){Console.WriteLine("人类 跑");}public void Eat(){Console.WriteLine("人类 吃");}}class Man : IMyInterface{public void Name(){Console.WriteLine("男人");}public void Eat(){Console.WriteLine("男人 吃");}}class Woman : IMyInterface{public void Name(){Console.WriteLine("女人");}public void Eat(){Console.WriteLine("女人 吃");}}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
