面向对象—15—匿名内部类

 

/*
匿名内部类:
1,匿名内部类其实就是内部类的简写格式。
2, 定义匿名内部类的前提:
  内部类必须是继承一个类或者实现接口。
3,匿名内部类的的格式:new 父类或者接口(){定义子类的内容}
4,其实匿名内部类其实就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象
5,匿名内部类中定义的方法最好不要超过3个
*/
abstract class AbsDemo
{
 abstract void show(); 
}

class Outer
{
 int x = 3;
 
 /*
 class Inner extends AbsDemo
 {
  void show()
  {
   System.out.println("show :"+x);
  }
 }
 */
 
 public void function()
 {
  //new Inner().show();
  
  new AbsDemo()
  {
   int num = 9;
   void show()
   {
    System.out.println("x="+num); 
   }
   void abc()
   {
    System.out.println("abc"); 
   } 
  }.abc();
  
  AbsDemo d = new AbsDemo() //父类引用指向子类对象
  {
   void show()
   {
    System.out.println("x="+x); 
   } 
   void abc()
   {
    System.out.println("abc"); 
   } 
  };
  d.show();
  //d.abc();//编译失败,父类中没有abc();方法
 }
}

class InnerClassDemo4
{
 public static void main(String[] args)
 {
  new Outer().function();
 }
}

-------------------------------------------------------------------------------------------

interface Inter
{
 void method();
}

class Test
{
 /*
 static class Inner implements Inter //内部类实现接口
 {
  public void method()
  {
   System.out.println("haha");
  } 
 }
 static Inter function()//注意返回的是Inter类类型的对象
 {
  return new Inner(); 
 }
 */
 
 //补足代码,通过匿名内部类
 static Inter function()
 {
  return new Inter() //匿名内部类
  {
   public void method()
   {
    System.out.println("ha"); 
   }
  };
 } 
}
class InnerClassTest
{
 public static void main(String[] args)
 {
    Test.function().method();
  //Test.funtion():Test类中有function函数是静态的。
  //.method():funtion这个方法运算后的结果是一个对象。而且是Inter类型对象。
  //因为只有是Inter类型的对象,才可以调用method方法。

//  Inter in = Test.function();
//  in.method();
 }
}

------------------------------------------------------------------------------------------------------------

class InnerTest
{
 public void main(String[] args)
 {
  //new Object();//创建了一个Object对象
  
  new Object() //创建Object子类对象
  {
   public void function()
   {
    
   } 
  }.function(); 
 } 
}

-------------------------------------------------------------------------------------

个人总结: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值