• 匿名解释

匿名就是没有名字的对象,在创建对象时,只通过new的动作在堆内存开辟空间,却没有把堆内存空间的地址值赋值给栈内存的某个变量用以存储

匿名类/对象其实就是类/对象,对象具有的功能匿名类/对象都具有,只不过有名字的类/对象可以重复使用,匿名类/对象只能用一次罢了。

  • 匿名类/对象特点

1、由于我们没有记录堆内存对象的地址值,所以只能用一次,再次使用就找不到了

2、匿名对象的好处就是使用完毕就是垃圾,可以在垃圾回收器空闲时回收,节省内存空间

  • 代码演示

public class AnonymityTest {public static void main(String[] args) {method(new Student());//匿名对象System.out.println("********************");worker w = new worker();method1(w); //非匿名的类非匿名的对象method1(new worker()); //非匿名的类匿名对象System.out.println("********************");//创建匿名子类对象Person p = new Person() {@Overridepublic void eat() {System.out.println("吃东西(匿名子类对象创建)");}@Overridepublic void breath() {System.out.println("呼吸(匿名子类对象创建)");}};method1(p);System.out.println("********************");//创建匿名子类的匿名对象method1(new Person() {@Overridepublic void eat() {System.out.println("吃东西(匿名子类的匿名对象创建)");}@Overridepublic void breath() {System.out.println("呼吸(匿名子类的匿名对象创建)");}});}public static void method(Student s){s.eat();}public static void method1(Person p){p.eat();p.breath();}
}class worker extends Person {@Overridepublic void breath() {System.out.println("工人带面具呼吸");}@Overridepublic void eat() {System.out.println("工人吃饭");}
}//执行结果:
/*
学生吃饭
********************
工人吃法
工人带面具呼吸
工人吃饭
工人带面具呼吸
********************
吃东西(匿名子类对象创建)
呼吸(匿名子类对象创建)
********************
吃东西(匿名子类的匿名对象创建)
呼吸(匿名子类的匿名对象创建)
*/

上文代码用到的Person类和Student类的展示 

class Person{String name;int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public void eat(){System.out.println("人吃饭");}public void breath(){System.out.println("人呼吸");}
}class Student extends Person{public Student() {}public Student(String name, int age) {super(name, age);}@Overridepublic void breath() {System.out.println("学生呼吸");}@Overridepublic void eat() {System.out.println("学生吃饭");}@Overridepublic String toString() {return "Student{" + "name='" + name + '\'' + ", age=" + age + '}';}
}

Java中的匿名类和匿名对象相关推荐

  1. java中什么是类什么是对象

    Java是一种面向对象的程序设计语言(Object Oriented Programming:OOP),面向对象的程序设计语言中有类和对象的概念,那么它们在概念上到底有什么区别呢? 下面以java语言 ...

  2. Java中使用Thread类

    Java的特点之一就是内置对多线程的支持. 每个Java程序都有一个默认的主线程main.如果main方法中又创建了其他线程,那么JVM就要在主线程和其他线程之间轮流切换,保证每个线程都有机会使用CP ...

  3. Java中匿名子类 的 匿名对象、匿名子类 的 非匿名对象、非匿名类 的 匿名对象、非匿名类 的 非匿名对象

    /*** @Author: YuShiwen* @Date: 2020/11/18 2:06 PM* @Version: 1.0*/ public class AnonymousTest {publi ...

  4. java匿名类和匿名对象及this的其他用法

    /* 匿名内部类:就是内部类的简写格式. 必须前提:内部类必须继承或者实现一个类或者接口. 匿名内部类其实就是一个匿名 子类对象. 格式:new 父类对象 or 接口(){子类内容:(覆盖父类的, 而 ...

  5. .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

    开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...

  6. Java中常用的类及其特点

    Java中的内部类有四种(内部类作用1.封装装类型. 2.直接访问外部类成员. 3.回调.)内部类,方便他们的外部类调用,一般不会被其它类使用,比如事件监听器之类的,外部类刚好继承了一个别的类,如果你 ...

  7. JAVA基础(12.Java中的常用类String)

    目录 1.前言 2.日期(时间)相关类 2.1 日期类的应用场景 2.1.1Java中的日期相关的几个类 3. Java中的常用类学习方式 3.1 什么是常用类?为什么要学习? 3.2 怎么使用Jav ...

  8. Java中的Unsafe类

    1.Unsafe类介绍 Unsafe类是在sun.misc包下,不属于Java标准.但是很多Java的基础类库,包括一些被广泛使用的高性能开发库都是基于Unsafe类开发的,比如Netty.Hadoo ...

  9. 在 Java 中,为什么需要创建内部类对象之前需要先创建外部类对象

    在 Java 中,为什么需要创建内部类对象之前需要先创建外部类对象   我们知道,在 Java 中,创建一个内部类对象之前,需要它的一个外部类对象.这是因为内部类可能使用外部类的数据.   在内部类中 ...

  10. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

最新文章

  1. 线性代数:第二章 矩阵及其运算
  2. 如何向亲戚们解释人工智能可以干啥?
  3. DateUtils常用方法
  4. 了解如何使用Yii2 PHP框架创建YouTube克隆
  5. Angular进阶教程一
  6. python 2个dict如何合并
  7. python 控制雕刻机_GitHub - cdhigh/PrinterCnc: 废打印机改装的大行程“雕刻机”,可以制作PCB。...
  8. 关于黑莓8700刷ROM4.5后使用五笔输入法出现问号的处理
  9. matlab按图像边缘抠图_Ps最全十大抠图方法都在这,最后一种万能「值得收藏」...
  10. matlab dll 反编译,libmx.dll
  11. 局域网和内网?系统远程桌面和内网远程软件?
  12. python基础(中)
  13. 日记(2007年7月3日)
  14. tesseract-ocr在mac下的使用汇总
  15. cad线加粗怎么设置_CAD图纸线条粗细如何修改?CAD图纸线宽如何调整?
  16. PyTorch 在 Windows 10 系统下的环境配置及安装
  17. 给图片加水印的简单方法,手机图片加水印也可以用
  18. private vlan(私有vlan)
  19. 【转载】uvm前置 · Vim 从入门到精通
  20. linux命令:head、tail

热门文章

  1. 小天才电话手表 Z3工作原理
  2. 简述HTTPS中间人攻击
  3. 为什么我购买了 iCloud 额外的 50g 存储空间?
  4. spring MD5加密
  5. php外卖评分,【php】php简易外卖送达时间(依据时间距离取整点)
  6. POJ 1873 The Fortified Forest 凸包 二进制枚举
  7. JavaScript设置cookie过期
  8. Windows10 系统下,如何彻底删除 MySQL
  9. Qt下实现的炉石计算器
  10. RocketMQ延迟消息