目前的理解接口:Interface 的作用就是包含一些抽象方法 然后再其他类中implement接口并override这些抽象方法 感觉纯粹只为了达到统一的方法名访问而作这么个抽象方法,跟直接在类中创建这么一个方法没啥区别 如果要做到像extend那样不重写方法就能使用父类的方法,Interface还是不行啊 实现的多继承也就变成了重写多个接口中的抽象方法,没有那层继承的意义啊
嘿嘿,看看大师们是怎么用interface的。多看看设计模式,才能真正理解什么是接口
继承固然重要,但多继承就会有很多问题
我举一个小例子
父类1有getName
父类2有getName
那么在子类的getName中super()返回的是父类1还是父类2
接口解决了上面的问题,对于没有实现的父接口来说,我返回什么纯粹是自己决定的
嘿嘿
看看设计模式,大量的关于接口的好处。继承是有局限的,虽然他好理解,但不好用
接口的功能可不仅仅如此啊,接口可以更加的多变,像模板方法。而且确切的说多重继承是有问题的,所以java使用的是接口。
比如说要读取一个配置文件,这个配置文件来源可以是本地的可以是网络的,
就可以声明个接口和两个实现类,
[code="java"]
/**
配置文件接口
*/
public interface Config {
/**
}
[/code]
[code="java"]
/**
本地配置文件
*/
public class LocalConfig implements Config {
public Object getConfig() {
// 获取本地配置文件
return null;
}
}
[/code]
[code="java"]
/**
远程配置文件
*/
public class RemoteConfig implements Config {
public Object getConfig() {
// 获取远程配置文件
return null;
}
}
[/code]
在使用的时候,不需要去管到底是本地的配置还是远程的配置,
[code="java"]
/**
使用接口
*/
public class UseConfig {
private Config config;
public void user() {
// 在使用之前注入,在使用的时候无需关注
// 是本地文件还是远程文件
Object obj = config.getConfig();
}
}
[/code]
接口是一种协议规范
在java中的反射,动态代理,spring的IOC都起着重要作用。
JVM中的方法区设计和此也有紧密的联系。