匿名对象、匿名内部类、适配器模式

匿名对象2种使用情况:

    new Person().run(); //当对方法仅一次调用
    show(new Person());//作为实际参数传递

================================
匿名内部类:其实就是实现了接口、抽象、具体类中的子类而已。
匿名内部类的产生 :
传统编程模式:

class NoNameDemo
{
   
    public static void main(String args[]){
        WomenStar w=new WomenStar(); //步骤3:创建对象
        TuHao t=new TuHao();
        t.marry(w); 
    }
}

interface  WEB
{
   
    public void white();
}

//步骤1:实现接口
class WomenStar implements WEB    
{
   
    public void white(){
        System.out.println("女明星很白"); //步骤2:重写方法
    }
}

class TuHao 
{
   
    public void marry(WEB w){
        w.white();
    }
}

结果:
D:\java2>javac NoNameDemo.java
D:\java2>java NoNameDemo
女明星很白

有了匿名内部类之后的编程模式是:
实现接口、创建对象、重写方法3个步骤一气呵气

class NoNameDemo
{
    public static void main(String args[]){
        //WomenStar w=new WomenStar();
        TuHao t=new TuHao();
        t.marry(new WEB(){
            public void white(){
                System.out.println("匿名内部类改进后,女明星也很白!");
            }
        });//实现接口、重写方法、创建对象一气呵成
    }
}

interface  WEB
{
    public void white();
}

class WomenStar implements WEB
{
    public void white(){
        System.out.println("女明星很白");
    }
}

class TuHao 
{
    public void marry(WEB w){
        w.white();
    }
}

结果:
D:\java2>javac NoNameDemo.java
D:\java2>dir
NoNameDemo$1.class
NoNameDemo.class
NoNameDemo.java
TuHao.class
WEB.class
WomenStar.class
D:\java2>javap NoNameDemo$1
Compiled from "NoNameDemo.java"
final class NoNameDemo$1 extends java.lang.Object implements WEB{
    NoNameDemo$1();
    public void white();
}
D:\java2>java NoNameDemo
匿名内部类改进后,女明星也很白!

======================================

匿名内部类可以是针对接口、抽象类、具体类,前面是针对接口的内名内部类。
下面是针对抽象类的匿名内部类

class NoNameDemo
{
    public static void main(String args[]){
        Pet p=new Pet(){
            public void meng(){
                System.out.println("匿名内部类,宠物蒙蒙哒!");
            }
        };

        p.meng();
    }
}


abstract class Pet{
   
     abstract public void meng();
}

结果:
D:\java2>javac NoNameDemo.java
D:\java2>dir
NoNameDemo$1.class
NoNameDemo.class
NoNameDemo.java
Pet.class
D:\java2>javap NoNameDemo$1
Compiled from "NoNameDemo.java"
final class NoNameDemo$1 extends Pet{
   
    NoNameDemo$1();
    public v
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值