正在加载图片...
其中的哪些已经没有 reference指着了。然后它会释放那些没有 reference指着的对象所占据的内存,这样内存就能被新的对象用了。这 就是说你永远也不必为重新申请内存而操心。你只要创建对象就行了,用 完之后它们自会离开。这样就彻底解决了因程序员忘了释放内存而产生 的,所谓“内存泄漏( memory leak)”的编程问题了。 创建新的数据类型:类 如果万物皆对象,那么特定类型的对象的特征和行为又是由什么决定的 呢?换言之,类是由什么组成的?或许你会想应该有一个叫“type”的 关键词,当然这种想法很有道理。然而长久以来,绝大多数的面向对象的 语言都用了 class这个关键词,它的意思是“现在我要告诉你这种新类 型的对象都有些什么特征。” class关键词(这个词太常用了,所以本书 的后面部分就不再用黑体字表示了)后面跟着新类型的名字。例如 class ATypeName i / Class body goes here */ 尽管类的正文部分只是一段注释(星斜杠以及在它们中间的东西,后面会 讲到的),但是这已经是一种新的类型了。虽然没什么大用,但是你可以 用new来创建这种类型的对象: ATypeName a new ATypeName ( 但是除非你为它定义一些方法,否则你没法让它去作更多的事情(也就 是,你不能向它发送任何有意义的消息)。 数据成员与方法 你定义类的时候(ava编程要做的就是定义类,创建这些类的对象, 然后再向这些对象发送消息),你可以往类里放两种元素:数据(feld, 有时也被称为数据成员),以及方法( method,有时也被称为成员函数 member function)。数据可以是任何类型的,能通过 reference进行 操控的对象。它也可以是任何一种 primitive数据(这时它就不是 reference了)。如果它是一个对象的 reference,那么你就必须用一种 被称为构造函数( constructor会在第4章详细讲述)的特殊方法对它进行 初始化,这样才能确保将它连上一个真实的对象(用new,就像前面看到 的)。如果这是个 primitive数据,那么你可以在定义的时候直接对它进 行初始化。(过一会就能看到, reference也可以在定义时进行初始化。) 每个对象都会保存它自己的数据成员;数据成员不能共享。下面就是一个 带数据成员的类 第8页共26页shhgs@wgqqh.com ￾ 8 ✁ ✂ 26 ✁ §*(úÌôõœm reference Z.,AºµkY̜m reference Z.(¥DP(Ÿ{ ¦Ÿ{;¹(¥ˆ, $¡TU[X'™VŸ{àMq¡ó%~¥&, ˆ uA"ýºW ¦Xh£N,æâFQY,µkŸ{àZ0 ( D[͟{\](m em ory l eak)Ï(áâ²,    ÄÅ^_`¥ YZ1O(¥(1a&™ü,öZNO( VÊ lu ,öZHŽ(Ê Y0¡º|vwm3×b ÍtypeÏ( ‘³  †|Šmt¢àÊcEQ )ÂVO(¶¥( ƒƈ, class ב³ A(¹’ÍíF%#¡ † (¥ÆmÌöZ1aÏclass ‘³ ( ׳ɷˆ, DE (¶XÁˆd‰WX,)¶e.(щ•Ä class ATypeName { /* Class body goes here */ } ÁÂ(T…ó3õ (fghE:FA"*4(34 ¶º ©g()  ôõ3†(,œöZˆ ¡ÝE ˆ new Q~ †(¥ ATypeName a = new ATypeName(); @¯¡™AO33̵ i࡜ÇAr1V(([  ¡X;A쁇m¹3(‚ƒ )  ¡O3(M (Java áâ%T(O3 ~ Ì(¥ Á Ì¥쁂ƒ ) ¡ÝE€Ëke†ÓÔOP (field m[¹j™OPŽQ ) E:µ (method m[¹j™ŽQO member function)OPÝE‡( ;^ reference %& MN(¥A[ÝE‡3† p ri m iti ve OP ( AX reference ,)ÄÅA3×¥( reference YZ¡'(ˆ3† ¹j™òÚO(constructor ºF 4 û(©)(1\µ¥A%& f^ ¦k;|AkJ3×lñ(¥(ˆ new }¶<g ()ÄÅ × p ri m iti ve OP YZ¡ÝEFO3(MÒU¥A% &f^(^3º;<g reference [ÝEFO3%&f^) L×¥ƺ|{Aý þ(OPŽQ OPŽQX;mnŽ¶3× dOPŽQ(
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有