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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© adamjy 中级黑马   /  2014-4-22 10:29  /  780 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 adamjy 于 2014-4-22 12:35 编辑

为什么接口不需要实现类直接就能使用,代码如下

  1. /**
  2. * 定义接口
  3. * @author AdamJY
  4. *
  5. */
  6. interface MyInterface {
  7.         void myFunc();
  8. }

  9. public class Demo1 {
  10.         static MyInterface interface1 = new MyInterface() {
  11.                
  12.                 @Override
  13.                 public void myFunc() {
  14.                         System.out.println("hi,i'm adam");
  15.                         
  16.                 }
  17.         };
  18.         public static void main(String[] args) {
  19.                 interface1.myFunc();
  20.         }
  21. }
复制代码

3 个回复

倒序浏览
  1. public class Demo1 {
  2.         static MyInterface interface1 = new MyInterface() {//等号右面的就是实现,这不是new接口,而是new了一个接口的实现类,这是匿名内部类
  3.                 @Override
  4.                 public void myFunc() {
  5.                         System.out.println("hi,i'm adam");
  6.                 }
  7.         };
  8.         public static void main(String[] args) {
  9.                 interface1.myFunc();
  10.         }
  11. }
复制代码
回复 使用道具 举报
本帖最后由 heheka123 于 2014-4-22 10:48 编辑
  1. /**
  2. * 定义接口
  3. * @author AdamJY
  4. *
  5. */
  6. interface MyInterface {
  7.         void myFunc();
  8. }

  9. public class Demo1 {
  10.         <font color="#ff0000">//这里相当于实例化的匿名内部类,匿名内部类中Override了myFunc方法,
  11.          //也就相当于你实现了接口new子类一个道理</font>
  12.         static MyInterface interface1 = new MyInterface() {
  13.                
  14.                 @Override
  15.                 public void myFunc() {
  16.                         System.out.println("hi,i'm adam");
  17.                         
  18.                 }
  19.         };
  20.         public static void main(String[] args) {
  21.                 interface1.myFunc();
  22.         }
  23. }
复制代码
回复 使用道具 举报
  1. /**
  2. * 定义接口
  3. * @author AdamJY
  4. *
  5. */
  6. interface MyInterface {
  7.         void myFunc();
  8. }

  9. public class Demo1 {
  10.         static MyInterface interface1 = new MyInterface() {
  11.                
  12.                 @Override
  13.                 public void myFunc() {
  14.                         System.out.println("hi,i'm adam");
  15.                         
  16.                 }
  17.         }; // 匿名内部类,注意这里是有分号的,相当与new 子类();把接口里的方法直接在子类中实例化。
  18.         public static void main(String[] args) {
  19.                 interface1.myFunc();
  20.         }
  21. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马