接口污染

如果一个类A实现了这个接口B,但是接口B中某个"功能"C 是A根本不可能有的,因为A实现了接口B,所以必须实现B中的所有"功能",那么这个C也要被A实现,显然这个C是A根本不可能有的.就造成了接口污染,

接口污染是指把接口做的过于胖,派生类必须实现某些它用不到的功能,这样不仅加大了接口间的耦合,而且带来不必要的复杂性,造成接口污染。

时间: 2024-10-13 02:03:07

接口污染的相关文章

C#中接口和抽象类的区别

什么是接口? 用来定义一种程序的协定.实现接口的类或者结构要与接口的定义严格一致.有了这个协定,就可以抛开编程语言的限制(理论上).C#接口可以从多个基接口继承,而类或结构可以实现多个接口.C#接口可以包含方法.属性.事件和索引器.接口本身不提供它所定义的成员的实现.接口只指定实现该接口的类或接口必须提供的成员. 如何使用接口? 例如: <span style="font-family:KaiTi_GB2312;">using System; using System.Co

抽象方法、接口

抽象方法 1.没有方法体 2.必须在抽象类中 3.子类必须重写所有抽象方法,除非子类也是抽象类 4.抽象类不能实例化 5.抽象成员的访问修饰符不能private 6.子类不能通过base关键字去,调用父类抽象方法 多个类,具有同样的同样的行为,如果找得到父类的情况下,使用抽象类,如果找不到父类,则使用接口. 接口 1.接口是一个特殊的抽象类 2.属性.方法.索引器.事件 3.接口成员不能加访问修饰符 4.实现接口的类,必须实现接口中的所有抽象方法,除非是抽象类 5.类是单继承,但是可以多实现 6

【转 】C#中的接口实现多态

C#中的接口实现多态 我们都知道虚方法实现多态,抽象方法实现多态等,我们今天来看看如何使用接口实现多态 1.首先我们先要来了解了解什么是接口,它存在的意识 01.接口就是为了约束方法的格式(参数和返回值类型)而存在的 02.接口可以实现多继承,弥补单继承的缺陷.  03.接口可以看成是一个特殊的抽象类,通过反编译看源码可知 04.接口中方法不用访问修饰符,因为CLR会自动添加,并且不能有方法体 05.如果一个类实现了某个接口,就得实现该接口中所有的方法 06.接口要谨慎使用,防止出现接口污染!

类和接口的区别

类: 类的分类有:抽象类(abstract).密封类(sealed).静态类(static) 抽象类(abstract) 关键字: abstract使用目的:若所有子类拥有共同的特性,可以把这个特性放到一个抽象类中,子类继承此抽象类. 特点: 1.不能被实例化:ClassName en=new ClassName();//这样会报错. 2.抽象成员必须包含在抽象类中. 3.抽象类除了抽象成员外,还可以包含别的成员(不用关键字 abstract). 4.子类继承抽象父类后,必须把父类中的所有抽象成

接口、索引器、Foreach的本质(学习笔记)

接口 什么是接口? 接口代表一种能力,和抽象类类似但比抽象类的抽象程度更高! 接口的定义: 1 public interface IEat//定义一个接口 2 { 3 void Eat(string food);//为该接口定义一种能力 4 } 接口的定义 从上边的例子中我们可以看到,接口中的方法是没有方法体的甚至连访问修饰符都没有.而且在接口中只能有方法.属性.索引器及事件! 接口的使用: 1 public class Dog:IEat //Dog类实现IEat接口 2 { 3 //Dog类实

什么是抽象类什么是接口两者有什么区别?如何使用它(转载)

一.抽象类: 抽象类是特殊的类,只是不能被实例化:除此以外,具有类的其他特性:重要的是抽象类可以包括抽象方法,这是普通类所不能的.抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们.另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们. 二.接口:      接口是引用类型的,类似于类,和抽象类的相似之处有三点:       1.不能实例化:       2.包含未实现的方法声明:       3.派生类必须实现未实现的方法,抽象

C# 接口笔记

/* 1. 实现多态的两种方式.             *    使用虚方法实现多态.             *    使用抽象方法实现多态.             *              * 2. 虚方法与抽象方法区别和联系             *    a. 相同点: 都有继承关系. 有种族感.             *               无论是抽象方法还是虚方法 子类都要去重写.             *                           

关于面向对象中接口和抽象类的一个比喻

一直对抽象类和接口有点疑惑,咋看功能差不多,网上找了点资料,看到一个比喻不错,记录一下. 1.飞机会飞,鸟会飞,他们都继承了同一个接口"飞":但是F22属于飞机抽象类,鸽子属于鸟抽象类. 2. 就像铁门木门都是门(抽象类),你想要个门我给不了(不能实例化),但我可以给你个具体的铁门或木门(多态):     而且只能是门,你不能说它是窗(单继承):一个门可以有锁(接口)也可以有门铃(多实现).     门(抽象类)定义了你是什么,接口(锁)规定了你能做什么(一个接口最好只能做一件事,你不

C#面试:抽象类与接口

本人近日面试遇到此等问题.然后又一次补习了一下下.希望对同行们有所帮助. 一.抽象类: 抽象类是特殊的类,仅仅是不能被实例化:除此以外.具有类的其它特性:重要的是抽象类能够包括抽象方法,这是普通类所不能的.抽象方法仅仅能声明于抽象类中,且不包括不论什么实现.派生类必须覆盖它们. 另外,抽象类能够派生自一个抽象类,能够覆盖基类的抽象方法也能够不覆盖,假设不覆盖.则其派生类必须覆盖它们. 二.接口: 接口是引用类型的,类似于类,和抽象类的相似之处有三点: 1.不能实例化: 2.包括未实现的方法声明: