第八章 基于对象的编程
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);
}
}
分享到:
相关推荐
### Java How to Program, Early Objects, 11th Edition #### 核心知识点概览 本书《Java How to Program, Early Objects, 11th Edition》由Deitel出版社出版,是一本面向初学者和有一定编程基础的学习者介绍Java...
### Java How to Program (Late Objects) - 关键知识点解析 #### 一、书籍概述 《Java How to Program》(第十版,对象延迟版本)是一本经典的计算机编程教材,旨在为初学者提供系统全面的Java语言学习指导。本书...
国外经典教材 Java how to program 英文原版第七版 Deitel 父子名作 总共两个压缩卷 这是第二个
Java How to Program, Early Objects, 11th Edition Java How to Program, Early Objects, 11th Edition Java How to Program, Early Objects, 11th Edition Java How to Program, Early Objects, 11th Edition
### Java How to Program (Fourth Edition) - 关键知识点解析 #### 一、基本计算机科学概念的理解 - **计算机科学基础**: 本章节首先介绍了计算机科学的基本概念,包括计算机硬件、软件以及它们之间的交互方式。 - ...
《Java How To Program Ninth Edition》是一本专注于Java编程的详细教程,由知名作者Harvey & Paul Deitel编著,特别适合初学者至进阶者学习。该书共分为30个章节,涵盖了从基础语法、面向对象编程概念到高级主题的...
总的来说,《Java How to Program(9th Edition)》是一本全面的Java学习指南,它涵盖了从基础到进阶的所有关键主题,旨在帮助读者成为一名熟练的Java程序员。通过阅读这本书,你不仅能学到扎实的编程技能,还能了解...
《Java如何编程,第7版-Prentice Hall》由Harvey M. Deitel和Paul J. Deitel联合撰写,是Java编程领域的一本经典教材,涵盖了Java语言的基础知识和一些进阶话题。该书不仅适合初学者,也适合作为有经验的程序员的...
国外经典教材 Java how to program 英文原版第七版 Deitel 父子名作 总共两个压缩卷 这是第一个
### Java How to Program, Early Objects, 10th Edition (Deitel 2015) 知识点解析 #### 一、书籍介绍与特点 《Java How to Program, Early Objects, 10th Edition》是由Deitel出版社出版的专业Java编程教材。本书...
### Java How to Program #### 书籍概述 《Java How to Program》是一本深入浅出介绍Java编程语言的经典教材,由Deitel & Associates, Inc.出版。该书采用独特的“实战代码”方法,提供了大量的实际运行代码示例,...
### Java How to Program 9th Edition - 关键知识点解析 #### 教材概述与作者介绍 《Java How to Program》第九版是一本经典的Java编程入门教材,在全球范围内被多所大学采用作为Java教学的主要参考资料。本书由...
本书以初学者为起点,循序渐进地介绍了面向对象的Java编程语言,系统地讨论了Java的基本概念和编程技术。全书共分为18章,首先从基本的Java理论开始,讲解了Java的基本数据类型和控制结构,Java中的方法、数组和字符...
C++ How to Program (10th Edition) By 作者: Harvey M. Deitel Paul Deitel ISBN-10 书号: 9332585733 ISBN-13 书号: 9789332585737 Edition 版本: 10th 出版日期: 2017 Format: Paperback C++ How to Program ...
Introduction to Java Applications Chapter 3. Introduction to Classes and Objects Chapter 4. Control Statements: Part I Chapter 5. Control Statements: Part 2 Chapter 6. Methods: A Deeper Look Chapter ...
Java How to Program, Sixth Edition
Visual C# 2008 How to Program 3rd Edition答案,英文版的。