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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© suiabing 中级黑马   /  2012-4-25 00:35  /  1585 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

类里面可以定义内部类,那么接口呢?听视频说可以定义内部接口,但是没有细说,如果定义内部接口的话,内部接口和外部接口分别怎么实现呢?

3 个回复

倒序浏览
本帖最后由 徐晓磊 于 2012-4-25 01:02 编辑

一.首先是外部接口的使用
  1. interface Person{
  2.         void talk();
  3. }

  4. public class Student implements Person{
  5.         public void talk(){
  6.                 System.out.println("i 'm a student.");
  7.         }
  8.         public static void main(String[] args){
  9.                 new Student().talk();
  10.         }
  11. }
复制代码
二.内部接口的实现可以有下面两种方法

1. 使用内部类实现
  1. public class InnerInterfaceTest{
  2.         interface InnerInterface{
  3.                 void show();
  4.         }
  5.         class InnerClass implements InnerInterface{
  6.                 public void show(){
  7.                         System.out.println("hello");
  8.                 }
  9.         }
  10.         public void show(){
  11.                 new InnerClass().show();
  12.         }
  13.         
  14.         public static void main(String[] args){
  15.                 new InnerInterfaceTest().show();
  16.         }
  17. }
复制代码
2.使用外部类实现
  1. class OutClass{
  2.         interface InnerInterface{
  3.                 void show();
  4.         }
  5. }

  6. class ImplementsClass  implements OutClass.InnerInterface{
  7.         public void show(){
  8.                 System.out.println("hello");
  9.         }
  10. }

  11. public class InnerInterfaceTest{
  12.         public static void main(String[] args){
  13.                 new ImplementsClass().show();
  14.         }
  15. }
复制代码
第二张图片是第二个代码和第三个代码运行结果

捕获1.PNG (611 Bytes, 下载次数: 25)

捕获1.PNG

捕获2.PNG (385 Bytes, 下载次数: 26)

捕获2.PNG
回复 使用道具 举报
可以的。
但内部接口只能定义在外部类或接口下,不能定义在内部抽象类或内部接口下。
内部抽象类的多重实现,即在内部抽象类或内部接口下再定义二级内部抽象类,甚至多级。
举例:
package com.bys.fisher2034;

public class SortUtil {
        public interface Sort {
                public void sort(int[] arr);
        }

        public static void swap(int[] data, int i, int j) {
                int c = 0;
                c = data[i];
                data[i] = data[j];
                data[j] = c;

        }

}
回复 使用道具 举报
徐晓磊 发表于 2012-4-25 00:55
一.首先是外部接口的使用二.内部接口的实现可以有下面两种方法

1. 使用内部类实现2.使用外部类实现第二张 ...

哦了 嗨了屁了  给力
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马