快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

Java how to program(Third Edition)??我的java手记(三)

第八章 基于对象的编程

1.用要害字public定义的类必须存于与该类同名的文件中,并且文件扩展名为.java。在同一个文件中定义多于一个public类是语法错误。
2.java中定义一个类时总要继续已有的类定义,最基本的继续Object类。它是最基本的超类或叫基类,它有一个主要的方式toSting。假如一个类在定义时不显试的使用要害字extends,这个类会隐试的继续Object类。
3.一个类中通常带有几个构造函数,这是通过方式的重载实现的,构造函数也可以带参数,但不能返回值。构造函数和其他方式的一个重要的差异是构造函数不答应返回值,void也不行。
4.java中的每一个类都是包的一部分,假如编程人员没有为类指定包,类会自动的放到缺省的包中,它包含当前目录下已编译的类。
5.一个字符串与任意对象的链接会产生对该对象toString方式的隐试调用。如:“/nImplicit toString()call:”+t;
6.Java API中的每一个类和接口属于一个特定的包,它包含一组相关联的类和接口。包实际上是对类和接口进行组织的目录结构。包提供了一种软件复用的机制。
7.创建一个可以复用的类的步骤如下:
   1)定义一个public类,假如类不是public,它只能被同一包中的其他类使用。
   2)选择一个包名,并把package语句加到可复用的类的源代码文件中。
   3)编译这个类。这样,它就被放到适当的包目录结构中,以供编译器和解释器使用。
   4)把这个可复用的类导入到需要用它的程序中。现在就可以使用它了。
8.为使每个包有惟一的名字,Sun Microsystem公司提出了一个为包命名的约定,每个包名字由你所在的Internet的域名的逆序开始。如:com.deitel.jhtp3.ch08.Time1。
9.假如类中没有定义构造函数,编译器会自动创建一个不带参数的缺省构造函数,也叫无参数构造函数。类的缺省构造函数将调用直接超类的缺省构造函数,并以缺省的方法初始化成员变量。
10.在定义类的方式或变量时,假如不为它们提供访问权限修饰符,那么这些方式或变量被视为包访问。
11.this引用被隐式地用于引用一个对象的实例变量和方式。另一个this引用的用法是实现“连接方式调用”,也叫“级连方式的调用”。如:t.setHour(18).setMinute(30).setSecond(22);
“.”运算符从左至右的结合,因此上述表达式首先计算t.setHour(18),然后此方式返回一个对象t的引用。又如:t.setTime(20,20,20).toString();
12.java执行自动的内存“垃圾收集”,将内存收回系统。当程序不再使用一个对象(即没有对对象的引用)时,对象会被标识,以供垃圾收集。当“垃圾收集”执行时,这个对象所占的内存会被收回。因此,其他语言如C,C++,常见的内存浪费(因它不是自动回收的)不会发生在java中,让而其他资源的浪费却是可能的。
13.java的每个类都有一个finalizer方式,用于将资源返回给系统。在垃圾收集器回收一个对象的内存之前,该对象的finalizer方式一定会被调用。执行此对象的结束事务处理。类finalizer方式的名字是finalize,它不接受任何参数,也不返回任何值。一个类只能有一个finalize方式。finalize方式最初在Object类中定义,它是一个空的方式,什么也不做。但这样保证了每个类都有一个finalize方式,以供垃圾收集器调用。
14.类的每个对象中都有类所有实例变量的一个拷贝,当只需要某个变量的一个拷贝供类的所有对象共享时,可以使用static类变量。static类变量只具有类作用域,public static类成员可以通过类的任一对象引用访问,也可以用类名加点操作符(如Math.random())访问。而private static类成员只能通过类的方式访问。
实际上,即使一个类对象都不存在,static类成员也会存在,执行时类被装入内存后就有了它们。当不存在类对象是,想要访问public static成员,只需在类成员前面加上类名和点操作符;而想要访问private static类成员,则必须提供一个public方式,而且在方式调用时必须在方式名前加上类名和点操作符。
声明为static的方式不能访问非static类的成员,此外与非static方式不同,static方式并无this引用,因为static类变量和static类的方式的存在独立与类的任何对象。并存在与类的任何对象被实例化之前。
15.实例分析
1)源代码
//类Employee2的定义;
package Employee2;

 
 
 
public class Employee2 extends Object{
  private String   fsname;
  private String    lsname;

  private static int count;   //声明静态私有变量count;

 
 
 
//类Emloyee2的构造函数;
  public Employee2(String fname,String lname) {
    fsname=fname;
    lsname=lname;

    count++;  //当创建一个实例时,实例数目加1;

    System.out.println(\"Employee object constract:\"+fsname+\" \"+lsname);
  }
//类Emloyee2的finalize()函数;
  protected void finalize(){
    --count;  //当撤销一个实例时,实例数目减1;
    System.out.println(\"Enployee object finalizer:\"+fsname+\" \"+lsname+
    \";count= \"+count);
  }
  public String getFullName(){return (fsname+\" \"+lsname);}

  public static int getcount(){return count;}  //静态方式getcount()返回静态变量count的值;

}

 
 
 

 
 
 

 
 
 
//测试Emloyee2的类Employee2Test
package Employee2;

 
 
 
import javax.swing.JOptionPane ;

 
 
 
public class Employee2Test{
  public static void main(String arg[]){
    String output;

    output=\"Employee before instantiation:\"+Employee2.getcount ();/*用类的静态方式得到实例变量的数目;*/

 
 
 
    Employee2 e1=new Employee2(\"susan\",\"baker\");
    Employee2 e2=new Employee2(\"jake\",\"bone\");

 
 
 
    output+=\"/n/nEmployees after instantiation:\"+
            \"/nvia e1.getcount (): \"+e1.getcount()+
            \"/nvia e2.getcount (): \"+e2.getcount()+
            \"/nvia Employee2.getcount (): \"+Employee2.getcount ();

 
 
 
    output+=\"/n/nEmployee 1:\"+e1.getFullName()+
            \"/nEmployee 2:\"+e2.getFullName ();

 
 
 

    e1=null;  //撤销对象实例;

    e2=null;

 
 
 
    System.gc();  //显式调用垃圾收集程序;

 
 
 
    output+=\"/n/nEmployee after gc():\"+
            Employee2.getcount ();
    JOptionPane.showMessageDialog (null,output,
    \"Static menbers and garbage collection\",
    JOptionPane.INFORMATION_MESSAGE);
    System.exit (0);
    }
  }





返回类别: 教程
上一教程: JavaScript正则表达式
下一教程: Java的文件操作--2(Zip文件释放)

您可以阅读与"Java how to program(Third Edition)??我的java手记(三)"相关的教程:
· JAVA HOW TO PROGRAM(THIRD EDITION)-我的JAVA手记(五)
· Java how to program(Third Edition)??我的java手记(四)
· Java how to program(Third Edition)??我的java手记(二)
· JAVA HOW TO PROGRAM(THIRD EDITION)-我的JAVA手记(四)
· Java how to program(Third Edition)??我的java手记(五)
    微笑服务 优质保证 索取样品