标题:接口的概念和特性总结笔记【xiao金刚】
只看楼主
xiao金刚
Rank: 2
来 自:广东
等 级:论坛游民
威 望:4
帖 子:67
专家分:38
注 册:2010-9-13
结帖率:90.91%
 问题点数:0 回复次数:0 
接口的概念和特性总结笔记【xiao金刚】
接口的概念和特性总结笔记【原创】
转载请注明来自        QQ709448646 明明很爱你(xiao金刚)
什么是接口?
接口就是初期(强调)可以认为是一个特殊的抽象类;
当抽象类中的方法都是抽象就可以使用接口来表示;
Class 用于定于类;
interface 用于定义接口;
接口定义时的一些格式和特点;
1.接口中常见的定义:常量 ,抽象类;
2.接口中的成员都有固定的修饰符;
interface     《————接口
implements《————实现
 常量:public static final
 方法:piblic abstact
注意:接口中的所有成员都是public,这些都是固定的。所以接口里面的方法和常量都是固定公开的;

接口:不可以new(创建对象),因为接口具有抽象方法;

需要被子类实现,子类对接口中的抽象方法全都覆盖后,子类才可以使用实例化;
 否则子类就是一个抽象类。
特点:
1。接口可以被多实现;
 
2。接口可以被接口多继承;(类extends【继承】类同时可以implements【多实现】接口)
为什么类不支持多继承。而接口可以多继承呢?因为接口是抽象类,抽象类中没有方法体。所以可以被继承,而类中拥有方法体,所以类无法时间多继承。【为了数据的安全性】
 
3。接口是程序的功能扩展,增加了程序的耦合性。



3。接口是对外暴露的规则。
这一点需要重点讲一下,什么是规则。其实这节课我不是听得很懂。但是起码可以体验到接口带来的扩展性是非常强大的。例如:封闭的硬盘只有100G的笔记本电脑。没有USB接口。当我们要增加内存容量的时候该肿么办?是不是要找一种方法来加?不然的话我就必须要换一个笔记本。但是。厂家提供了USB接口。USB接口是不是可以用来扩大内存容量。我 加一个外置的移动硬盘500G的。是不是马上变为了600G?这就是接口的扩展性。
又例如早期的CPU。当时的CPU都是焊死在机器里面的。我想要升级电脑。换个CPU的时候是不是要丢掉主板啊?这样不是太奢侈了嘛,于是制造主板 电源 芯片几个公司的人一起开会。开会说什么呢?一起研究怎么弄才可以不换掉主板就升级CPU呢? 后来就讨论出来了利用插槽就可以实现了。插槽是什么呢?插槽就是接口。CPU早期定义了478个针脚,每一个针脚都有自己的作用。用来处理一些供电或者数据处理之类的工作,这些针脚对应了插槽的数量,后来CPU越来越强大了。接口的数量也越来越多,完成的工作也越来越大了越来越快了。这就是接口来带的好处。强大的扩展性。
这里似乎没有说到暴露吧?错。其实已经讲到了。USB不就是暴露了嘛。插槽不是暴露了嘛,行。笔记就复习到这里。明天讲多态 ,代码例子在下面,自己看吧。不懂的回帖。
程序代码:
*/
interface Inter
{

 public static final int NUM=3;//全局,静态,最终。。。。这是一个常量
 public abstract void show();


}


interface InterA
{

 public abstract void show();


}


class Demo
{

 public void function(){}
}
class Test extends Demo implements Inter,InterA   //一个类在继承一个父类的同时也可以实现一个或多个接口,先继承在实现可以
              //扩展这个类的功能。
            //


{

 public void show(){}  //只要有方法体就实现了覆盖。接口的权利比较特殊
        //接口里面的方法都是公有的,所以要覆盖其中的方法,必须声明的函数权利为public
        //而抽象类不是,抽象类中的方法权限可以单独设定,而接口都是固定的。




}


interface A
{
  void methodA();
}
interface B extends A     //接口与接口之间是继承关系。extends
{

 void methodB();
}
interface C extends B    //且接口之间存在多继承,如果B没有继承A的话
       //C可以直接继承A和B。  interface C extends B,A   接口的多继承是因为接口中的抽象方法都没有方法体
{       //但是在多继承时候,继承的两个或多个接口中不能有同名却不同类型的函数。
       //(因为在实例创建对象时,对象调用该函数时会出错,不知道该调用哪一个)      
 void methodC();


}


class D implements C        //D若要创建对象的话必须覆盖ABC中的三个方法
{       

 public void methodA(){}

 public void methodC(){}

 public void methodB(){}


}
class  InterfaceDemo
{

 public static void main(String[] args)

 { Test t = new Test();  //用实现接口的类创建一个对象
  System.out.println(t.NUM);  //对象调用成员
  System.out.println(Test.NUM);  //类名直接调用成员
  System.out.println(Inter.NUM);  //接口名调用成员。编译完成后,接口也会生成一个字节码class文件。



 }


忘记说了。NUM已经被final修饰了。不允许赋值了。所以t.NUM=4是错误的。


[ 本帖最后由 xiao金刚 于 2012-11-29 04:31 编辑 ]
搜索更多相关主题的帖子: 接口 public interface 
2012-10-31 03:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-385192-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.099613 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved