匿名内部类

匿名内部类:

1,匿名内部类其实就是内部类的简写格式。
2, 定义匿名内部类的前提:
 内部类必须是继承一个类或者实现接口。
3,匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4,匿名内部类 就是一个匿名子类对象。对象有点胖。简化书写覆盖方法。
5,匿名内部类中定义方法最好一个或者两个。
---------------------------------------------------------
内部类演化为匿名内部类:
abstract class ADemo{
 abstract void show();
}
class Outer1{
 int x=3;
 
 /*class Inner extends ADemo{
  void show(){
   System.out.println("show:"+x);
  }
 }*/
 public void function(){
//  new Inner().show();
  
  new ADemo()
  {
   void show(){
    System.out.println("show:"+x);
   }
  }.show();
  
 }
}
public class InnerTest {
 public static void main(String[] args) {
  
  Outer1 out=new Outer1();
  out.function();
 }
}
--------------------------------------------------------------
class Outer1{
 int x=3;
 
 public void function(){
  
  ADemo ad=new ADemo()
  {
   int num=9;
   void show(){
    System.out.println("show:"+x+"num="+num);
   }
   void abc(){
    System.out.println("abc");
   }
  };
  ad.show();
  //ad.abc();  编译失败,父类没有
  
  
 }
}
-----------------------------------------------------------------------
补足代码分析题:
interface Inner{
 void method();
}
class Test{
 
  /*static class Inner1 implements Inner{
   @Override
   public void method() {
    System.out.println("Inner1");
   }
 }*/
 
 //不足代码,通过匿名内部类
 public static Inner function() {
  
  return new Inner()
  {
   public void method()
   {
    System.out.println("inner");
   }
  };
 }
 
}
public class InnerTest {
 public static void main(String[] args) {
  
  Test.function().method();
  //Inner in=Test.function();  返回的结果为一个对象,方可调用直接调用函数method()。
  //in.method();
 }
}
------------------------------------------------------------------------
自定义一个function:
public class InnerTest {
 
 /*static class Inn{
  void funtion(){
   System.out.println("inner");
  }
 }*/
 public static void main(String[] args) {

  //new Inn().funtion();
 System.out.println("-------------------");
  new Object(){
   void funtion(){
    System.out.println("innertest");
   }
  }.funtion();   //Object的子类调用。
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdn_金手指

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值