#Java笔记5:抽象类的匿名以及接口实现类的匿名问题的代码总结!!仅代码

public class Person {
    public static void main(String[] args) {
        new Object() {
            public void test() {
                System.out.println("尚硅谷");
            }
        }.test();
        Pa a = new Pa();
        //1.通过创建实现类的实例然后调用方法
        a.methodA();
        //2.提供接口匿名实现类的对象调用方法,并没有创建类,
        // 而是对接口内的方法直接重写
        A a1 = new A() {
            @Override
            public void methodA() {
                System.out.println("接口匿名实现类的对象调用方法," +
                        "我并没有创建有名的类,我是匿名的类!");
            }
        };
        a1.methodA();
        //3.提供接口匿名实现类的匿名对象
        new A() {

            @Override
            public void methodA() {
                System.out.println("我是提供接口匿名实现类的匿名对象," +
                        "没有创建实现类的名称,也没有创建对象名!");
                System.out.println("我在结束时直接调用了methodA()哦," +
                        "注意啦!!!");
            }
        }.methodA();
        //1.正常情况下的有对象名,有类名的抽象类方法的重写以及调用
        Pb b = new Pb();
        b.methodB();
        //2.提供有对象名的匿名子类的对象
        B b1 = new B() {
            @Override
            public void methodB() {
                System.out.println("我是抽象方法的重写," +
                        "首先我有对象名,其次我的继承子类是匿名的,看不到的哦");
            }
        };
        b1.methodB();//通过对象名进行调用
        //3.提供匿名子类的匿名对象
        new B(){
            @Override
            public void methodB() {
                System.out.println("我是提供继承匿名子类的匿名对象," +
                        "没有创建子类的名称," +
                        "也没有创建对象名!");
                System.out.println("我在结束时直接调用了methodB()" +
                        "哦,注意啦!!!");
            }
        }.methodB();
    }


}

interface A {//接口A

    public abstract void methodA();
}

class Pa implements A {//接口A的实现类

    @Override
    public void methodA() {
        System.out.println("我是有对象名,有实现类名" +
                "的重写methodA,注意,是对接口A的实现");
    }
}

abstract class B {//抽象类B

    public abstract void methodB();

}

class Pb extends B {
    @Override
    public void methodB() {//继承抽象类的方法重写
        System.out.println("我是有名有类的抽象类的方法重写");
    }
}

注意区分:接口时:

1.既有实现类又有对象名

2.匿名实现类的对象,

3.匿名实现类的匿名对象--------------->一般常用这个

抽象类时:

1.既有继承子类又有对象名

2.匿名继承子类的对象,

3.匿名继承子类的匿名对象--------------->一般常用这个

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值