02_JavaSE之OOP--面向对象(对象的内存图、匿名对…
2018-06-18 03:03:40来源:未知 阅读 ()
面向对象(二)
一、对象在内存中的状态
1.以下面的代码为例
1 class Demo { 2 3 public static void main(String[] args) { 4 //创建对象 5 Person p = new Person(); 6 7 //调用属性并赋值 8 p.name = "李白"; //人的姓名赋值 9 p.age = 49; //人的年龄赋值 10 11 //调用学习的方法 (调用行为) 12 p.study(); 13 14 } 15 16 } 17 18 //人的 19 class Person { 20 //成员变量 21 String name; //姓名 22 int age; //年龄 23 24 public void study { //人在学习 25 System.out.println("年龄为" + age + "的" + name + "正在学习"); 26 } 27 }
具体的执行方法,如图:
二、匿名对象
接下来谈的只是简单的了解,并没有深入研究。
1.匿名对象是什么
所谓匿名对象也就是没有名字的对象。什么又叫有名字的对象呢?如:Person p = new Person()。这个就是有名字的对象,他的名字叫p。而直接new Person()就是没有名字的对象。
2.匿名对象的应用场景是什么呢,它如何用呢?
场景:匿名对象主要用在仅仅只调用一次的时候。那么他有什么好处呢?节省代码。
匿名对象也可以作为参数传递。如:一个方法 setXXX( new Person() )。
同时应知道,调用一次之后,匿名对象就是垃圾,会被垃圾回收机制回收。
用法:以上面的代码为例。
1 Person p = new Person(); 2 p.study(); 3 4 //匿名对象调用 5 new Person().study();
三、this的用法
this是一个关键字,代表着当前对象的引用。也就是代表当前对象。
正式说this之前我们先来了解一下private这个关键字。
private是干什么呢?他表面的意思是私有的,为了类的属性不能被人随意修改(出于安全性考虑),因此有了private,protect,default,public等关键字。private是私有的,我们不能直接通过创建对象p,p.name赋值,那么我们如何赋值呢。这时候我们就得在类的内部提供一个方法去给他赋值,同时提供一个获取的方法即set/get方法。
1 public class Person { 2 //成员变量 3 String name; //姓名 4 int age; //年龄 5 6 //set and get方法 7 public String getName() { 8 return name; 9 } 10 11 public void setName(String name) { 12 this.name = name; 13 } 14 15 public int getAge() { 16 return age; 17 } 18 19 public void setAge(int age) { 20 this.age = age; 21 } 22 } 23 24 class Demo2 { 25 public static void main(String[] args){ 26 Person p = new Person(); 27 p.setAge(1); 28 p.setName("苏轼"); 29 30 } 31 }
这个时候this就代表着当前对象的引用,this.name就是Person的成员变量name.用来区分成员变量和局部变量重名问题。
如有错误之处,欢迎指正。
邮箱:it_chang@126.com
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:03 JVM的垃圾回收机制
下一篇:Date与String之间的转换
- 面对对象(2) 2020-05-28
- 【JavaSE】反射的总结 2020-05-25
- 【JavaSE】多线程与并发编程(总结) 2020-05-25
- 【JavaSE】泛型知识点(总结) 2020-05-25
- Java笔记:Java面向对象 2020-05-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash