Java SE 011 面向对象之封装 续二.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java SE 011 面向对象之封装 1、如果一个类包含了属性与方法,那么该类的每一个对象都具有自己的属性,但无论一个类有多少个对象,这些对象共享同一个方法。 解说:对于java来说,当我一个类,生成一个对象的时候,这个对象在内存的堆里面,这个内存区中就会存在这样一个变量,它会被这个对象所容纳。如果我再去new出来一个对象,在新的内存堆里面又会生成一个对象,这个对象里面也会放置属于自己对象的一个属性。那么这两个对象之间的属性是互不干扰的。即生成一个对象就会生成一个新的属性。 即新生成一个对象,这个对象就容纳一个属性,再生成一个对象,就再容纳一个属性。 对于方法来说,方法存在内存区的方法区中。这部分只有一个,即这部分的内存只有一份。所以无论一个类生成了多少个对象,这些对象都会使用内存里面同样的一个方法。只不过不同的对象去调用这个方法的时候,因为通过引用去调用这个方法,那么引用就知道,这个方法就知道是哪一个引用去调用我的。我来去操纵哪一个对象里面的属性。 因为通过引用就传递了这些信息。 通过引用里面传递的具体参数,来判断是哪一个引用调用了这个方法。 当方法传递的参数类型是原生数据类型的时候,原生数据类型的值是10即,上图上i为10,当赋完值之后,age的值也是10,但是age是age,i是两者之间没有任何关系,即赋完值之后,你是你的,我是我的。你的任何变化对我来说不会产生任何影响,所以当i传给age之后,i与age已经脱离关系了,即便在方法里面将40赋给了age,相当于把age的值改成了40,那么对i的值也不会产生任何的影响。因为这是一个值的传递。它只是把10的值传给了age,传完之后,你是你,我是我,所以打印出来i没有发生变化。 为什么在引用传递的时候,那里就会发生变化,引用是什么,引用实际上是对象地址的一种表示形式,引用里面实际上存放的是对象的地址。那么当调用person.change(person)之后,它将person传给了形参,两个person的值是一样的,引用存放的是对象的地址。也就是将同一个person的值,传给了person。那么两者之间的值就一样了。那么引用的值一样,代表什么,代表它们指向同样的一个对象,因此即然指向同样一个对象,那么通过方法里面的那个引用,对对象所做的任何修改,就会反应到方法外面的对象的引用上面。所以方法里面对对象的修改,就会反应到person.change(person)这个引用上面,因为它们指向的是同样一个对象。 2、关于方法参数传递的总结: 关于java中方法参数传递,无论传递的是原生数据类型还是引用类型,统一是传值(pass by value)。 解说:对于原生类型来说,就是把值传过去,传完之后,你是你,我是我,两者之间没有关系了。 如果传递的是引用类型,将引用的值传过去,引用的值是对象的地址,既然将对象的地址传过去了,那么说明两个引用就具有了相同的地址,相同的地址就表示两个同样的值指向同样的一个对象,因此通过一个引用所对对象作出的修改,就会立刻反应到另一个引用上面去。 3、什么类型的引用指向什么类型的对象 比如People类型的引用就能指向People类型的对象,但不能指向Student类型的对象。 例如:People people = new People();//正确 People people = new Student();//错误。 4、构造方法(Contructor) 构造方法用于完成对象属性的初始化工作。 构造方法的特点: a)、构造方法的名字必须与类名完全一致(包含大小写) b)、构造方法没有返回值,连void也不能出现。 c)、如果在定义一个类的时候,没有为类声明构造方法,那么Java编译器会自动为类添加一个没有参数且方法体为空的构造方法(默认的构造方法)。 d)、如果在定义一个类的时候,为类声明了构造方法,那么Java编译器就不会再为类添加构造方法了。 e)、不能显示调用类的构造方法,构造方法通常是通过new关键字隐式调用。 5、new关键字在生成对象时完成了三件事情: a)、为内存开辟内存空间 b)、调用类的构造方法。 c)、将生成对象的地址返回。 Person person = new Person(); 6、默认构造方法 构造方法没有参数,且方法体为空。 7、使用new来生成对象的时候,后面的小括号()表示构造方法的参数列表,如果构造方法不接收参数,那么小括号中的内容为空。如果构造方法接收参数,那么构造方法中的实际参数需要与构造方法定义中的形式参数保持一致(参数类型一致,参数数量一致,按照顺序逐一的赋值)。

文档评论(0)

优质文档 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档