分享
 
 
 

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

王朝java/jsp·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

第八章 基于对象的编程

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);

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有