鱼C论坛

 找回密码
 立即注册
查看: 4006|回复: 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回收。 只使用一次的对象可以通过匿名对象的方式完成,这一点在以后的开发中将经常使用到。
/**
 * @quther hjg
 * @date 2021/1/28 21:35
 **/
public class Demo7 {
    /**
     * 匿名        :        没有名字
     */
    public static void main(String[] args) {
//        Math2 m = new Math2();
//        int num = m.sum(100,200);
        
        //下面这里没有m
        int num = new Math2().sum(300, 200);
        System.out.println(num);
    }
}
class Math2{
    int sum(int x,int y) {
        return x+y;
    }
}
解释一下:
//        Math2 m = new Math2();
//        int num = m.sum(100,200);
这边是正常我们命名的做法,下面就是使用匿名的写法
//下面这里没有m
        int num = new Math2().sum(300, 200);

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

                               
登录/注册后可看大图


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

public class Demo8 {
    /**
     * 如果一个对象 , 我们准备使用两次 或 以上。 那么一定要给对象 创建对象名。
     * @param args
     */
    public static void main(String[] args) {
        new Person5().name = "张三"; //三段独立
        new Person5().age = 18;
        new Person5().say();
    }
}
class Person5{
    String name;
    int age;
    void say() {
        System.out.println("自我介绍,姓名:"+name+" , 年龄:"+age);
    }
}
它的运行结果是这样的        :
自我介绍,姓名:null , 年龄:0

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

                               
登录/注册后可看大图

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

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

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

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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-2 17:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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