面向对象11

接口

区别

类:继承只有一个父类;
接口:一个类可以有多个接口;去除单一性;

接口定义了某一批类所需要遵守的公共行为规范,只规定这批类必须提供的某些方法,而不提供任何实现。接口体现的是规范和实现分离的设计哲学。让规范和实现分离正式接口的好处,让系统的各模块之间面向接口耦合,是一种松耦合设计,从而降低各模块之间的耦合,增强系统的可扩展性和可维护性;

定义接口:

Java只支持单继承,不支持多继承,即一个类只能直接继承一个父类,这一缺陷何以通过接口来弥补。Java允许一个列实现多个接口,这样使程序更灵活,易扩展;

[访问符] interface 接口名 [extends 父接口1,父接口2······]{
//接口体,一般里边可以访函数声明,比如 public void start();
}

说明:
访问符可以是public 或 缺省,如果缺省访问符则默认采用包权限访问控制符,即在相同包中才可以访问该接口;
一个接口可以继承多个父接口,但是接口只能继承接口,不能继承类;
一个接口体内可以包含静态常量,抽象方法,内部类,内部接口以及枚举的定义,从Java8开始允许接口中定义默认方法,类方法;
与类的默认访问符不同,接口体内定义的常量,方法等都默认为public,可以省略public关键字,即当接口中定义的常量或方法不写public ,其访问权限仍然是public;

接口中定义的成员变量默认都是常量 public static final xxx=xxx;不赋值会报错
接口中定义的普通方法只能是public的抽象方法
接口中定义的默认方法,需要使用default修饰;

类中定义的内部类/接口/枚举都默认为public static;

实现接口:

使用implements关键字;
使用接口的类不会有太大关系,都可以看作是接口的子类型;
接口可以 把子类对象赋值给接口;如pci pic=new network(); 多态类似;

接口不能直接实例化,但可以使用接口声明引用类型的变量,该变量可以引用到接口的实现类的实例对象上。接口的主要用途就是被实现类实现,一个类可以实现一个或多个接口;
[访问符] interface 接口名 implements 接口1[,接口2······]{

}

implement关键字用于实现接口;
一个类可以实现多个接口,中间用逗号隔开;
一个类在实现一个或多个接口时,这个类必须完全实现这些接口中定义的所有抽象方法,否则该类必须定义为抽象类;
一个类实现某个接口时,该类将会获得接口中定义的常量,方法等,因此可以将实现接口理解成一种特殊的继承,相当于实现类继承了一个彻底抽象的类;

和抽象类一样,接口是一种更加抽象的类结构,因此不能对接口直接实例化;
可以声明接口变量,并用接口变量指向当前接口实现类的实例;
使用接口变量指向该接口的实现类的实例对象,这种使用方式也是多态的一种体现;

接口的继承:
接口的继承和类的继承不同,接口完全支持多重继承,即一个接口可以有多个父接口。除此之外,接口的继承与类的继承相似;当一个接口继承父接口时,该接口将会获得父接口中定义的所有抽象方法,常量;
一个接口继承多个接口时,多个接口跟在extends关键字后,用逗号隔开;

注意:
一个Java源文件中可以有多个接口和类,但是最多只能有一个接口或类是public,且该源文件的文件名必须和public接口名或类名一致;

接口和抽象类有许多相似之处:
接口和抽象类都不能被实例化,需要被其他类实现或继承;
接口和抽象类的类类型变量都可以指向其实现类或子类的实例变量;
接口和抽象类都可以包含抽象方法,实现接口或继承抽象类时都必须实现这些抽象方法;

接口和抽象类之间是有区别的,主要体现在二者的设计目的上;
接口体现的是一种规范,这种规范类似于总纲,是系统个模块应遵循的标准,以便各模块之间实现耦合,以及通信功能;
抽象类体现的是一种模板式设计,抽象类可以被当成是系统实现过程中的中间产品,该产品以实现了部分功能但不能当作最终产品,必须进一步完善,而完善可能有多种不同方式;

接口和抽象类使用过程中需要注意的区别:
接口中除了默认方法和类方法,不能为普通方法提供实现(无方法体);而抽象类则完全可以为普通方法提供方法实现;
接口中定义的变量默认是 public static final,且必须赋予初值,其实现类中不能重新定义,也不能改变其值,即接口中定义的变量你都是最终的静态常量;而抽象类中的定义的变量和普通类一样,默认是缺省,其实现类可以重新定义也可以根据需要改变其值;
接口中定义的方法默认缺省的是public,而抽象类则和类一样默认是缺省的;
接口不包含构造方法,而抽象类可以包含构造方法,抽象你的构造方法不是用于创建对象,而是让其子类调用以便完成初始化操作;
一个类最多可以有一个直接父类,包括抽象类;但一个类可以直接实现多个接口;一个接口可以有多个父接口;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值