当前位置 博文首页 > YHSevenWater的博客:Java抽象类的匿名子类

    YHSevenWater的博客:Java抽象类的匿名子类

    作者:[db:作者] 时间:2021-08-11 16:03

    抽象类的匿名子类

    涉及到匿名的东西,都是只用一次,目的就是为了省事!(有时候不一定用,但是为了看得懂代码,这个还是要有所了解的)

    1.非匿名类的匿名对象
    2.匿名类的非匿名对象
    3.匿名子类的非匿名对象
    4.匿名子类的匿名对象

    匿名说到底就分为以上四种情况,下面将从程序中弄清楚这四种情况的用法:

    package com.java.oop5;
    
    /**
     * @description: 抽象类的匿名子类
     * 涉及到匿名的东西,都是只用一次,目的就是为了省事!
     * 1.非匿名类的匿名对象
     * 2.匿名类的非匿名对象
     * 3.匿名子类的非匿名对象
     * 4.匿名子类的匿名对象
     * @author: Fish_Vast
     * @Date: 2021/8/11
     * @version: 1.0
     */
    public class PersonTest {
        public static void main(String[] args) {
            show1(new Worker());    //1.非匿名类Worker的匿名对象
            System.out.println("******************");
            Worker w = new Worker();
            show1(w);               //2.匿名类的非匿名对象w
            System.out.println("******************");
            Person p = new Person() {   //3.匿名子类的非匿名对象p
                @Override
                public void run() {
                    System.out.println("跑步跑步");
                }
    
                @Override
                public void breath() {
                    System.out.println("呼吸呼吸");
                }
            };  //注意这里是要加分号的!!!
            /*因为在抽象方法中不能进行对象的实例化,不能造对象,但是我们假设暂时不知道子类的名字是什么,
            *所以借助子类重写方法来实现方法的调用。
            */
            show1(p);
            System.out.println("******************");
            //这里是干脆就连对象名也省去,得从上至下慢慢梳理一遍就能懂其思想了。
            show1(new Person(){ //4.匿名子类的匿名对象(最省事!!!)
                @Override
                public void run() {
                    System.out.println("跑步");
                }
                @Override
                public void breath() {
                    System.out.println("呼吸");
                }
            });
        }
    
        public static void show1(Person p){
            p.breath();
            p.run();
        }
    }
    
    class Worker extends Person{
        @Override
        public void run() {
            System.out.println("好好运动");
        }
    
        @Override
        public void breath() {
            System.out.println("多呼吸新鲜空气");
        }
    }
    

    在这里插入图片描述

    cs
    上一篇:没有了
    下一篇:没有了