鱼C论坛

 找回密码
 立即注册
查看: 4528|回复: 0

[学习笔记] 027.面向对象基础-------匿名对象

[复制链接]
发表于 2021-3-26 22:21:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 hjg 于 2021-3-27 09:51 编辑
早起的鸟儿有虫吃,瞎写的代码有BUG!     


         大家好,我是一名好久不见的老鱼油了,刚开始接触编程的时候都是看甲鱼老师的视频和来鱼C 论坛找答案 ,经过一段时间的学习,对计算机组成原理 计算机网络 操作系统  数据结构与算法 算法设计与分析 C语言 python语言 java语言 and so on 。。的学习,让我在编程方面算是打下了一点儿基础,这次打算记录一下自己学习java的笔记,一来自己可以巩固知识,二来也算是来回馈给甲鱼&&平台。我更喜欢和大家一起学习,互相讨论。。 本人也新写手,文章不足方面还请大家体谅和指点一二。。。。。。

我们开始正文,先欢迎一下。

                               
登录/注册后可看大图

这篇介绍面向对象基础------匿名对象。。我这个系列打算就接着 非安全哥哥 的系列教程下去,之前没学java的可以先学完安全哥哥的教程再来
                                [url=【Java 教程(原创)】索引帖 https://fishc.com.cn/thread-80133-1-1.html (出处: 鱼C论坛)]他的链接[/url]

为什么要面向对象基础呢?
这边先分析非安全哥哥的目录

                               
登录/注册后可看大图


那什么叫匿名对象呢?
没有对象名称的对象 就是匿名对象。 匿名对象只能使用一次,因为没有任何的对象引用,所以将称为垃圾,等待被G·C回收。 只使用一次的对象可以通过匿名对象的方式完成,这一点在以后的开发中将经常使用到。
  1. /**
  2. * @quther hjg
  3. * @date 2021/1/28 21:35
  4. **/
  5. public class Demo7 {
  6.     /**
  7.      * 匿名        :        没有名字
  8.      */
  9.     public static void main(String[] args) {
  10. //        Math2 m = new Math2();
  11. //        int num = m.sum(100,200);
  12.         
  13.         //下面这里没有m
  14.         int num = new Math2().sum(300, 200);
  15.         System.out.println(num);
  16.     }
  17. }
  18. class Math2{
  19.     int sum(int x,int y) {
  20.         return x+y;
  21.     }
  22. }
复制代码

解释一下:
  1. //        Math2 m = new Math2();
  2. //        int num = m.sum(100,200);
复制代码

这边是正常我们命名的做法,下面就是使用匿名的写法
  1. //下面这里没有m
  2.         int num = new Math2().sum(300, 200);
复制代码


还记得 非安全说的 对象的引用和实体 ??里面介绍了 堆(heap) 和 栈(stack)
匿名了的话就会是图里面这样只有堆没有栈 用完就不要了。。。

                               
登录/注册后可看大图


下面再来看一段代码
  1. /**
  2. * @quther hjg
  3. * @date 2021/1/28 21:38
  4. **/

  5. public class Demo8 {
  6.     /**
  7.      * 如果一个对象 , 我们准备使用两次 或 以上。 那么一定要给对象 创建对象名。
  8.      * @param args
  9.      */
  10.     public static void main(String[] args) {
  11.         new Person5().name = "张三"; //三段独立
  12.         new Person5().age = 18;
  13.         new Person5().say();
  14.     }
  15. }
  16. class Person5{
  17.     String name;
  18.     int age;
  19.     void say() {
  20.         System.out.println("自我介绍,姓名:"+name+" , 年龄:"+age);
  21.     }
  22. }
复制代码

它的运行结果是这样的        :
自我介绍,姓名:null , 年龄:0

为什么会这样呢?看这张图

                               
登录/注册后可看大图

解释一下第一行新建一个Person5        :只有name 没有 age
第二行也新建一个Person5        : 只有 age 没有 name
第三行 say 方法也新建一个Person5   name 和 age 都没有

记住一句话:如果一个对象 , 我们准备使用两次 或 以上。 那么一定要给对象 创建对象名。

OK,,结束 下次见   面向对象进阶

可以的话顺手一路四点一下【收藏 评分分享淘帖顶】   再多多留言       你的支持就是我持续写作的动力!!!

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-15 12:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表