- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
T4 接口
T4 接口
接口:(纯虚的抽象类)
接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类至少要实现哪些功能,继承它的类可以增加自己的方法。
接口可以看作是一种特殊的“抽象类”,但是采用与抽象类完全不同的语法来表示,两者的设计理念是不同的。
接口的语法
[修饰符] interface 接口名 extends 父接口1,父接口2,……{ 定义常量和抽象方法 }
*接口中的抽象方法若不写修饰符默认为public,protected和pravite不可使用
Eg: public interface InterA{
public void aa();
}
类实现接口的语法
class 类名 extends 父类名 implements 接口1,接口2,…{实现继承接口的抽象方法}
Eg: public class ClassA implements InterA{
public void aa(){
System.out.println(“接口是纯虚的抽象类”);
}
}
接口和类、抽象类是一个层次的概念,命名规则相同。如果修饰符是public,则该接口在整个项目中可见。如果省略修饰符,则该接口只在当前包可见。
接口中可以定义常量,不能定义变量。接口中属性都会自动用public static final 修饰,即接口中属性都是全局静态常量。接口中的常量必须在定义时指定初始值。
接口中所有方法都是抽象方法。接口中方法都会自动用public abstract 修饰,即接口中只有全局抽象方法。
和抽象类一样,接口同样不能实例化,接口中不能有构造方法。
接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类。
一个类只能有一个直接父类,但可以通过imolements实现多个接口。实现类必须实现接口的全部方法,否则必须定义为抽象类。实现类可以实现多个接口。类在继承父类的同时又实现了多个接口时,extends必须位于implemends之前。
方法定义的参数类型可以是接口的类型。
声明基类打点调出的方法都是基类的方法。
为什么使用接口:
用接口代替抽象类是因为它拥有比抽象类更好的特性:接口可以被多继承,设计和实现完全分离,更自然的使用多态,更容易搭建程序框架,更容易更换实现。
接口使用的好处:
面相接口编程可以实现接口和实现的分离,这样做的最大好处就是能够在客户端未知的情况下修改实现代码。
何时使用接口:
用在层和层之间的调用。层和层之间最忌讳耦合过度高或是修改过于频繁。设计优秀的接口能够解决这个问题。
用在那些不稳定的部分上。如果某些需求的变化性很大,那么定义接口也是一种解决之道。
设计良好的接口:
设计良好的接口就像我们日常使用的万用插座一样,不论插头如何变化,都可以使用。
良好的接口定义一定来自于需求的,它绝对不是程序员绞尽脑汁想出来的。
接口是一种约定:
接口的约定体现在接口名称和注释上,有些接口只有名称,但方法的实现方式需要通过注释来约定,程序设计时接口的约定不用考虑具体的实现。
接口是一种能力:
接口只提供方法,但具体的实现需要在实现类来完成,接口的能力就体现在接口的方法上,关心实现类有何能力,而不关心实现细节。
C#接口:
接口语法:[修饰符] interface 接口名:父接口1,父接口2……{ 定义属性,定义方法 }
实现类:class 类名:父类名,接口1,接口2,……{ }
C#接口与java接口的区别:
Java中接口通过extends继承父接口,类通过implements实现接口,C#中通过冒号“:”来实现这两个功能。
Java接口中的成员变量(属性)一律是常量,自动用public static final修饰,C#接口中不允许存在成员变量,但可以有属性。
Java接口中属性和方法都可以使用public修饰,C#中默认public,但不允许显示使用public修饰。
Java接口中可以定义静态常量和方法,但是C#接口中不允许包含任何静态成员。
C#中的接口名字按照惯例以大写字母“I”开头。
文档评论(0)