接口实现类的问题
来源:互联网 发布:全民wifi网络异常 编辑:程序博客网 时间:2024/05/16 05:01
Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
一.接口含义:
1.Java接口,Java语言中存在的结构,有特定的语法和结构;
2.一个类所具有的方法的特征集合,是一种逻辑上的抽象。
前者叫做“Java接口”,后者叫做“接口”。
Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。
Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public,静态的和final属性。
二.为何用接口Java是一种单继承的语言,若要给已有父类的具体类增加新功能,在OCP原则下,解决是给它的父类加父类,或者给它父类的父类加父类,直到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。
当有了接口,以上例子中,就不需要维护整个等级结构中的所有类了.
三.接口具可插入性:
在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何超类。此类将不得不实现这个接口所规定的方法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个接口类型装载,传递实现了他的所有子类)。
接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。
正是有了接口,使得Java单继承性有了新的扩展的可能(变向地实现多继承);三.类型等级结构Java接口(以及抽象类)一般用来作为一个类型的等级结构的起点。
如果一个类已经有了一个主要的超类型,那么通过实现一个接口,这个类可以拥有另一个次要的超类型,这种次要的超类型叫做混合类型。
四.Java接口分类1、普通接口(含有方法定义)
public interface ActionListener{ public abstract void actionPerformed(ActionEvent event);}2、标识接口(无任何方法和属性定义)
标识接口是没有任何方法和属性的接口.标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。
public interface Serializable{};
3、常量接口是指用Java接口来声明一些常量,然后由实现这个接口的类使用这些常量。
public interface AppConstants{ public static final DATA_SOURCE_NAME="test"; public static final USER_NAME="test"; public static final PASSWORD="test";}
五.接口的特点
1、Java接口中的成员变量默认都是public,static,final类型的(都可省略),必须被显示初始化,即接口中的成员变量为常量(大写,单词之间用"_"分隔)
2、Java接口中的方法默认都是public,abstract类型的(都可省略),没有方法体,不能被实例化
3、Java接口中只能包含public,static,final类型的成员变量和public,abstract类型的成员方法
4、接口中没有构造方法,不能被实例化
5、一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口
6、Java接口必须通过类来实现它的抽象方法
7、当类实现了某个Java接口时,它必须实现接口中的所有抽象方法,否则这个类必须声明为抽象类
8、不允许创建接口的实例(实例化),但允许定义接口类型的引用变量,该引用变量引用实现了这个接口的类的实例
9、一个类只能继承一个直接的父类,但可以实现多个接口,间接的实现了多继承.
六.Java接口和Java抽象类区别面向对象设计的重点在于抽象。抽象类与接口都位于继承树的上层。
如果接口的实现类有很多,那么你可以像下面这样,把所有实现类的类名在一个地方定义。可以是一个property文件, 可以是数据库,也可以直接写在代码里。也可以用工厂模式,也可以用代理,spring等等,方法很多,就不一一列举了。。。
public class Car { public static void main(String[] args) throws Exception{ List<String> classList = new ArrayList<String>(); classList.add("Car1"); classList.add("Car2"); for(String className : classList) { Carinterface car = (Carinterface) Class.forName(className).newInstance(); System.out.println(car.getName() + " : " + car.getPrice()); } }}
- 接口实现类的问题
- 实现接口的类是否继承接口实现的问题
- 关于实现Serialable接口的类中的serialVersionUID问题
- java中的抽象类实现接口的问题
- Spring中接口和实现类命名规范的问题
- 关于接口的多态性问题 接口的实现
- C++接口定义,实现,继承接口类的子类,实例对象访问方法问题
- Array数组接口实现的一些问题
- 实现System.IComparable接口的一个问题
- 实现ItemStateListener接口时的问题
- 类、接口继承以及接口的实现
- java类实现接口注意问题
- 实现MethodBeforeAdvice接口问题
- Case:接口实现类的方法上使用AspectJ方式实现aop的异常问题
- c++接口类的实现
- c++接口类的实现
- c++类接口的实现
- 实现接口的枚举类
- 增量型博客
- 字符串函数
- huffman表在xvid中的应用
- python之py2exe
- oracle中 connect by prior 递归算法,connect_by_root,sys_connect_by_path,connect_by_isleaf,CONNECT_BY_ISCYC
- 接口实现类的问题
- java实现几个2的n次方和的分解
- 可爱的编译器优化 你这叫我情何以堪
- 记录一下CSR蓝牙做DFU的流程
- 全面解析Linux内核的同步与互斥机制
- 总结服务器支撑技术(Linux)
- JsonConvert ASP.NET Json的序列化与反序列化
- 汇编中.word的具体用途是什么
- 发帖求助者必看——提问的艺术(转)