Java面向对象基础


面向对象基础


对象创建

Book b = new Book();
Book a = b;

Book a = b并不是将b这个对象的值赋给a,对象在创建时只创建了一个,a和b都是该对象的“名字”,对a进行属性的更改也会影响到b;比如此时将a.name = “111”,调用b.showname,控制台上也会显示"111"

联系栈和堆更深刻地解释对象创建时这一现象的原因
在这里插入图片描述
首先声明栈和堆的基本概念,栈中存放的是基本数据类型和引用数据类型的引用值,例如int a =1,a和1都是直接存储在栈中的,而引用数据类型,例如Book b = new Book(),存放的是b这个对象名称和其内容的地址

对象在创建时,名称存放在栈中,而属性存放在堆内存中;堆内存中的垃圾回收由GC完成,当栈中不存在对堆内存中数据的引用时,GC会自动清理回收这部分内存

Book b1 = new Book();
b1.name = "aaa";
Book b2 = new Book();
b2.name = "bbb";
b1 = b2;

这段代码执行到b1=b2时,b1.name=“aaa”;这部分内容在堆内存中,因为已经没有任何对象名称对其引用,因此会自动释放

因此Book a = b;这条语句实际上只是将b引用的地址赋给了a,当用a对象调用方法时,改变的仍然是该地址对应的堆内存里的内容

Book b1 = new Book();

对象创建时会自动生成无参数的构造方法,因此即使不定义无参方法,这段代码也不会出错;但编码规范还是建议自行定义无参方法和全参方法


方法重载

方法是否构成重载需要满足以下几个条件:
1、方法名称相同
2、参数列表长度 或 参数列表类型 或 参数列表顺序不同
与返回值类型无关!!与返回值类型无关!!与返回值类型无关!!


匿名对象

不创建对象,仅使用一次
new Book().方法
在这里插入图片描述
多次使用开辟多个内存空间,彼此之间毫无关联


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值