对接口的概念一直不理解,请畅所欲言,谈谈自己的理解

接口,java中很重要的概念。
在大学的时候(当然了,我大学没怎么学习,混了),对接口的认识就是,它是一种规范,里面都是抽象方法,没有具体实现,也就是没有这些方法的方法体,实现它的类,一定要实现它的方法。哎,这些话,只要你看过一次介绍接口的资料,谁都会说。
后来工作了,结果所有同事都只会说这些话,而且都认为自己很好的理解了。
随着看书的学习,我知道了接口和多态,后期绑定这些概念,要在一起理解,比如现在有个方法a,参数可以是接口类型的引用,然而最后传递进去的参数,都是实现了这个接口的类的对象,这里就要理解多态和后期绑定了。从而能看出接口的好处了:方法a的参数是接口的引用,你就不用对这这个接口的好几百种实现,每个实现写一种方法了,只是对接口类型写,然后通过多态和后期绑定,这都是java自己帮你完成的,修改起来也方便,毕竟只有一个方法,要是再有新的实现也没问题,如果不这样,每有一个新的实现,就要再写一个方法。
如下:


接口是处理字符串用的。
interface Processor{
public String name();
Object process(Object input);
}
1.实现类是变大写的
class Upcase implements Processor{
public String name(){
return getClass().getSimpleName();
}
String process(Object input){
return ((String)input).toUpperCase();
}
}
2:实现类是变小写的
class Lowercase implements Processor{
public String name(){
return getClass().getSimpleName();
}
String process(Object input){
return ((String)input).toLowerCase();
}
}
3.实现类是分隔字符串的
class Splitter implements Processor{
public String name(){
return getClass().getSimpleName();
}
String process(Object input){
return Arrays.toString(((String)input).split(" "));
}
}

public class Apply {
public static void process(Processor p ,Object s){
System.out.println("Using Procsssor"+p.name());
System.out.println(p.process(s));
}
public static String a ="Dinnger Ni hao Wo ai kkkkkkkkkkkkKKKKKKKKK";
public static void main(String[] args) {
process(new Upcase(), a);
process(new Lowercase(), a);
process(new Splitter(), a);
}

}
写了一个process方法,其中参数有Processor p,就是我最开始叙述的那样。

[b]目前我就理解了接口的这2点,但是很多次再看到接口,还是很迷惑,不明白[/b]
第一点好想:是规范吗,你在某一领域经验太少,人家就帮你写好规范,你只要照着全实现了,就可以了。就完成了。
比如让你实现ServletContext监听器,你不会,人家告诉你,你只要实现2个接口ServletContextListener和ServletContextAttributeListene,就行了。你就实现去把。
第二点呢,就是这些上述代码,我看了看人家写的文章,叫面向接口编程,也不知道我理解的对不对。就是对着接口编,然后由它的实现类来最后解决问题。
[b]最近看jsp,request对象的类型是接口,但是你可以用这个对象得到参数啊,或者用它的其他方法,我就不明白了,我也没写实现啊,怎么就能用它的方法了呢,后来明白了,这叫内置对象,就是可以直接用,你自己不用写实现。但是,我看很多资料,都是接口类型的引用,就可以直接调它的方法了。我根本没写实现,也没找到它在哪写的实现,反正就是能调用它的方法了。[/b]

我在公司也像很多人问过,都很瞧不起我,觉得我还在搞java基础的东西,但是他们也不能解答,在他们眼里,不需要这些东西,会用就行,不用知道为什么这样用。我不想这样,所以很想搞明白它。java基础是最重要的。


希望大家能谈谈自己的理解,教教我,使我能开一下眼界。

最后附上我总结的java绑定,也是从一本书上看到的,然后再自己理解一下:
就是A,B有继承关系,他们都有方法f(),现在A a = new B(),
a.f()到底调用谁的f()。

1) 实例方法与引用变量的实际引用对象的方法绑定,这是动态绑定,java虚拟机决定的。
2) 静态方法与引用变量所声明的类型的方法绑定。这属于静态绑定,编译期就绑定了。
3) 成员变量与引用变量所声明的类型的成员变量绑定,这种绑定属于静态绑定,编译期就绑定了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值