zoukankan      html  css  js  c++  java
  • 对java中匿名对象和匿名类的简单理解

    一、匿名对象

     匿名对象:没有名字的对象

    匿名对象的特征:
          语法上: 只创建对象,但是不用变量来接收

          匿名对象的使用:
                 1.匿名对象也是一个对象,具有对象的所有功能
                 2.每一次使用匿名对象时,都是一个新的对象, 每次创建匿名对象都是不同的对象,一个匿名对象,只能使用一次,即匿名对象只能调用一次

          匿名对象只在堆内存中开辟空间,而不存在栈内存的引用

    eg:

    public class NiMingObject {
    
        public static void main(String[] args) {
            //1.非匿名对象(正常的对象)
            Dog d = new Dog();
            
            d.setAge(10);
            d.setName("来福");
            
            //d.eat();
            System.out.println(d.getAge()+"..."+d.getName());
            
            //2.匿名对象
            new Dog();
            
            //3.匿名对象的使用
            new Dog().setAge(18);
            new Dog().setName("旺财");
            
            System.out.println(new Dog().getAge()+"..."+new Dog().getName());
            //new Dog().eat();
        }
    
    }

    二、匿名类(匿名内部类)

    如果要执行的任务需要一个对象,但却不值得创建全新的对象(原因可能是所需的类过于简单,或者是由于它只在一个方法内部使用),匿名类就显得非常有用

    如我们需要一个监听类,并且在实例化这个监听类的时候才需要实现这个监听类内部的方法,那么使用匿名类就最方便了

        public static void test01(){
            //使用匿名内部类快速 创建 AbstractAnimal抽象类的子类对象
            //第一种方式
            new AbstractAnimal(){
    
                @Override
                public void eat() {
                    System.out.println("吃");
                }
    
                @Override
                public void sleep() {
                    System.out.println("睡");
                }
                
                
            };
            //第二种
            new AbstractAnimal(){
                public void eat() {
                    System.out.println(".....");
                }
                @Override
                public void sleep() {
                    System.out.println("!!!");
                }
            }.sleep();
            //第三种
            AbstractAnimal an1 =  new AbstractAnimal(){
    
                @Override
                public void eat() {
                    System.out.println("吃吃吃");
                }
    
                @Override
                public void sleep() {
                    System.out.println("睡睡睡");
                }
                
            };
            
            an1.eat();
            an1.sleep();
        }
    
    }
  • 相关阅读:
    【ML-9-1】支持向量机--软硬间隔与支持向量机
    【ML-8】感知机算法-传统和对偶形式
    【ML-7】聚类算法--K-means和k-mediods/密度聚类/层次聚类
    【ML-7】聚类算法-实例代码
    【ML-6-2】集成学习-boosting(Adaboost和GBDT )
    【ML-6-1】集成学习-bagging(随机森林)
    【ML-5】决策树算法
    【ML-4】逻辑回归--用于分类
    【ML-3.1】梯度下降于牛顿法实例
    树状数组
  • 原文地址:https://www.cnblogs.com/txbblog/p/10364558.html
Copyright © 2011-2022 走看看