A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wuchuang1992 中级黑马   /  2013-11-1 11:07  /  695 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

接口和内部类的区别?

点评

最好配有代码~以便理解。  发表于 2013-11-1 13:53

5 个回复

倒序浏览
接口和内部类没有具体的可比性:
         接口:就是把公共的方法抽取出来,然后定义在接口中,其子类对每个功能都不一样,需要重写其方法,这样更直观,不会遗漏,因为子类必须要实现接口中的所有方法。
       内部类:描述事物的同时还有内部事物,此事物内部类,内部事物访问外部事物。这样就更直观,使用内部类也会是代码更简化,但是会有点复杂。


     他们之间的联系就是:可以使用内部类实现接口方法,例如:new 接口(){  重写接口中的方法},看起来像是实例化了接口,其实是使用内部类实现现了此接口,其实是相当于其子类。


   希望随你有帮助!
回复 使用道具 举报
接口 interface  接口中有常量和抽象方法 必须要由子类来实现接口中的方法 一个子类可以实现多个接口
内部类 内部类就是定义在类中的类  内部类的特点
内部类可以访问到外部类中的属性和方法
外部类想要访问到内部类 就要建立内部类的对象 通过对象才能访问内部类的方法和属性。
至于区别 主要特点反正都这些 要说不同 也没有什么可比性。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 魏-玉-彪 于 2013-11-1 15:23 编辑
  1. /*
  2.         当一个类中的方法都是抽象的时候,我们用接口来体现。

  3.         接口的特点:
  4.                 A:不用使用abstract进行修饰的,它本身就可以代表是一个抽象的内容。
  5.                 B:类可以实现一个接口,也可以实现多个接口。
  6.                   类在继承一个类的同时,还可以实现多个接口。
  7.                 C:接口继承接口,可以单继承,也可以多继承。
  8. */
  9. interface  Inter   // 类中全是抽象方法的类叫做接口,同时用 interface 代替class来声明
  10. {
  11.         public abstract void show();
  12. }



  13. interface Inter2 extends Inter { //接口可以继承接口,也可以继承多个接口
  14.         
  15.         //代码略********
  16.         
  17.         }  

  18. abstract class JiCheng implements Inter,Inter2{ //类可以实现个多接口,
  19.         //
  20.         public abstract void  couXiangFangFa();  //用abstract 修饰的方法叫做抽象方法,
  21.         //含有抽像方法的类叫做抽象类
  22.         
  23.         public void qiTaFangFa(){}//代码略********
  24.         }




  25. class InterImpl implements Inter    //类与接口的关系是实现
  26. {
  27.         public void show()
  28.         {
  29.                 System.out.println("InterImpl实现了接口Inter");        
  30.         }

  31.         
  32. }

  33. class WaiBu{                         // 内部类与外部类的包系是包含。
  34.         
  35.         private int bianBiang;//外部变量
  36.         
  37.         WaiBu(){// 外部类构造方法
  38.                 System.out.println("这是外部类");
  39.                
  40.                 }

  41.         public void fangFa(){        //外部类方法
  42.                 new NeiBu();//在外部类中创建内部类



  43.                 }


  44.         class NeiBu{
  45.                 NeiBu(){  //内部类构造方法
  46.                         System.out.println("这是内部类");

  47.                
  48.                
  49.                 }
  50.                
  51.                
  52.                 //代码略********
  53.                
  54.                
  55.                
  56.                 }
  57.         
  58.         }





  59. class InterfaceDemo
  60. {
  61.         public static void main(String[] args)
  62.         {
  63.                
  64.         InterImpl i=new InterImpl(); //创建实现了接口 1的类。
  65.         i.show();//调用类对象的方法

  66.         WaiBu w =new WaiBu(); //        创建外部类对象
  67.         w.fangFa();                // 外部类对象调用本身方法创建内部类
  68.         }
  69.         
  70.         
  71. }
复制代码
1声明方式不同 类用 class  接口用interface
2 所处位置不同,内部类在外部类的内部,接口独立于类
3关系不同,内部类包含在外部类中。接口要类来实现接口,也就是接口强制实现他的类重写(覆盖)接口中的所有方法








评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
1. 接口
接口为我们提供了一种将接口与实现分离的更加结构化的方法。接口是一个完全的抽象类,它没有提供任何形式的具体实现,它允许创建者确定方法名,参数类表,返回类型没有任何方法体的方法。
接口被用来建立类与类之间的协议。接口类修饰符必须是public,default(默认的,本包内有访问权限)或者前边两个和abstract组合,接口也可以包含域,但是这些域隐士地是public static final类型的,所有接口域必须初始化值。接口中方法默认访问级别都是public,如果定义访问级别小于public,编译将不能通过。
接口是用来实现类间多重继承功能的结构.接口不能实例化,即不能用new运算符创建对象。一个类通过使用关键字implements声明自己实现一个或多个接口。在类体中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法接口中的方法是自动公有的,在实现接口时必须把方法声明为public 。接口中的方法都是抽象的。
一个接口可以继承另一个接口。
任何类(包括普通类,内部类,抽象类)可以实现一个接口。
2. 抽象类
抽象类也叫做抽象基类,抽象类是基础类和接口中间的一个中庸之道,即有基础类特性(已实现的方法体),又有接口特性(抽象方法),抽象类用abstract修饰,抽象类中可以有抽象方法也用abstract来修饰。
抽象方法:java 中可以定义一些不含方法体的方法,它的方法体的实现交给该类的子类根据自己的情况去实现抽象类:包含抽象方法的类叫抽象类。一个抽象类可以有一个或多个抽象方法。
抽象类必须使用abstract修饰符来定义,抽象方法也必须用abstract来修饰。抽象类不能被实例化,不能用new关键字去产生对象。抽象方法只能声明,不能实现。含有抽象方法的类必须被声明为抽象类,抽象类的子类必须覆盖所有的抽象方法后才能被实例化,否则这个子类还是个抽象类。
抽象类和接口的区别与联系
一个类可以实现多个接口, 而一个类只能继承一个抽象类。接口只定义方法,实现一个接口就是要实现接口的所有方法。而抽象类可以实现部分方法。多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口
3. 内部类
可以将一个类的定义放在另一个类的定义内部,这就是内部类,内部类允许你把一些逻辑相关的类组织在一起,并控制内部类的可视性,内部类和组合是完全不同的概念,这点要注意。
最初,内部类看起来就是一种类隐藏机制,将类置于其他类的内部,但是其实内部类用途远远不止这些,它可以和外部类进行通信,而且你用内部类写出的代码更加优美清晰。
定义:在一个类内部定义类
内部类的写法:class 类名{ }它可以直接访问和引用他的外部类的所有变量和方法,与外部类相比,内部类可以声明为private或protected.
用static修饰一个内部类时(嵌套类),这个类相当于是一个外部定义的类,所以static的内部类中可声明static成员static内部类不能使用外部类的非static成员变量
函数的局部变量(形参也是局部变量),内部类的成员变量,外部类的成员变量重名,用以下方式来明确指定我们真正要访问的变量。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马