Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1894848
  • 博文数量: 606
  • 博客积分: 9991
  • 博客等级: 中将
  • 技术积分: 5725
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-17 19:07
文章分类

全部博文(606)

文章存档

2011年(10)

2010年(67)

2009年(155)

2008年(386)

分类:

2008-09-11 21:49:42

第六章 复用类
 
虽然不是很常用,但编译单元内完全不带public类也是可能的。在这种情况下,可以随意的对文件命名
 
除了内存以外,其他的垃圾回收(例如清楚显示器上已经创建的窗口),不要依赖垃圾回收器做任何事。如果需要进行清理,最好是编写你自己的清理方法,但不要依赖finalize()。
 
增量开发
   继承技术的优点之一,就是它支持增量开放模式。你可以引入新代码而不会在现有代码中引发bug;事实上,这种模式可以将新的代码之中。
 
向上转型:有导出类转型成基类,在继承图上是向上移动的。
 
final数据
 
   一个既是static又是final的字段只占据一段不能改变的存储空间。
 
   对于基本类型,final使数值恒定不变;而用于对象引用,final使引用恒定不变。一旦引用初始化指向一个对象,就无法再把它改为指向另一个对象。然而,对象器自身却是可以被修改的,Java并为提供是任何对象恒定不变的途径(但可以自己编写类以使得对象恒定不变的效果)。这以限制同样适合数组,它也是对象。
 
   不能因为V2是final的,就认为无法改变它的值。由于他是一个引用,final意味着无法将V2再次指向另一个新的对象。
 
  1.空白的final
    Java允许生成“空白final”,所谓空白final是指被声明为final但又未给定初值的字段。必须在字段的定义处或每个构造器中用表达式对final进行赋值,这正是final字段在使用前总是被初始化的原因所在。
 
 2.final参数
   参数指明为final。意味着你无法在方法中改变参数引用所指向的对象
 
 3.final方法
   使用final方法的原因又两个。第一:把方法锁定,以防任何继承类修改它的含义。第二:效率。
 
 4.final与private关键字
 
   类中所有的private方法都隐式的指定式final。由于无法取用private方法,所以无法覆盖它。可以对private方法添加final修饰词,但这并不能给该方法增加任何额外的意义。
 
   如果某方法为private,它就不是基类的接口的一部分。它仅是隐藏于类中的程序代码,只不过是具有相同的名称而已。但如果在导出类以相同的名称生成一个public、protectd或宝访问权限方法的话,该方法就不会产生在基类中出现的“仅又相同名称”的情况。此时你并没有覆盖该方法,仅是生成一个新的方法。
 
 5.final类
   当将某个类的整体定义为final时(通过将关键字final置于它的定义前),就表明了你不打算继承该类,而且页不允许别人这样做。
 
 
继承与初始化
   

import com.bruceeckel.simpletest.*;

class Insect {
  static Test monitor = new Test();
  int i = 9;
  int j;
  Insect() {
    prt("i = " + i + ", j = " + j);
    j = 39;
  }
  static int x1 =
    prt("static Insect.x1 initialized");
  static int prt(String s) {
    System.out.println(s);
    return 47;
  }
}

public class Beetle extends Insect {
  int k = prt("Beetle.k initialized");
  Beetle() {
    prt("k = " + k);
    prt("j = " + j);
  }
  static int x2 =
    prt("static Beetle.x2 initialized");
  public static void main(String[] args) {
    prt("Beetle constructor");
    Beetle b = new Beetle();
    monitor.expect(new String[] {
      "static Insect.x1 initialized",
     "static Beetle.x2 initialized",
      "Beetle constructor",
      "i = 9, j = 0",
      "Beetle.k initialized",
      "k = 47",
      "j = 39"
      });
  }
} ///:~

阅读(727) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~