- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chp10 Object类与常用类,内部类
Chp10 Object 类与常用类,内部类
本章导读
本章首先将为读者介绍Object 类。这个类在Java 中具有很特殊的地位,这是所有类的
父类,是Java 继承树的根。因此,这个类中的很多方法都很值得研究。
然后为大家介绍的是Java 中的包装类和String 类。这些都是Java 开发中比较常用的类,
也有很多常用的方法。
另外,本章还会介绍Java 中内部类的一些语法。
1 Object 类
Object 类是Java 中所有类的父类。例如下面的代码:
class ClassA{}
class ClassB extends ClassA{}
在上面的代码中,ClassB 类明确的写明了,继承自ClassA 类。那ClassA 类呢?像这种没
有明确写明extends 的类,都继承自java.lang.Object ,也就是本章我们要介绍的Object 类。
正因为有这个特性,在Java 中任何一个类,如果追根溯源的话,归根结底都是Object 类的
直接或者间接子类。
前面我们分析过,Java 中所有的类会组成一种树状关系,而Object 类,就是这棵类继
承关系树的树根。
既然Object 类是所有类的父类,那我们就得好好研究一下这个类。
首先,Object 类既然是所有类型的父类,那么在Java 中所有的对象,都能够赋值给Object
类型的引用。这是因为子类对象可以直接赋值给父类引用,而所有Java 中的类都是 Object
类的子类。
其次,由于子类中能够继承父类中的公开方法。因此,Object 类中所有的公开方法都能
被子类继承。也就是说,Object 类中的公开方法,是Java 中所有对象都拥有的方法。
接下来,我们就仔细来研究一下Object 类的公开方法。
1.1 finalize
finalize 是一个protected 的方法。虽然不是public 的,但是这个方法也同样能够被所有
子类继承(考虑一下,protected 能够被同包以及非同包的子类访问,也就是能够被所有子
类访问)。
finalize 方法有什么特点呢?这个方法会在对象被垃圾回收时由垃圾回收器调用。
如何来理解垃圾回收呢?请看下面的代码:
class Student{
String name;
int age;
}
public class TestStudent{
public static void main(String args[]){
Student stu1 = new Student();
1
stu1 = new Student();
}
}
在这段代码中,创建了两个不同的Student 对象。内存中的结构如下图:
Student
stu1
对象 1
Student
对象2
可以看出,一开始分配的那块内存(Student 对象 1),由于之后把stu1 指向了Student
对象 2 (创建了一个新对象并把首地址赋值给stu1 引用),因此再也没有引用指向 Student
对象 1。因此结果就是,这个对象占据着内存空间,但是没有引用指向这个对象,因此这个
对象无法被使用。于是,这种没法使用但又占据内存空间的对象,就被称为垃圾对象。这些
垃圾对象占用内存空间,如果一直不处理的话,会造成内存空间的浪费,严重的话会造成程
序的崩溃。
那遇到垃圾对象怎么解决呢?在传统的编程语言中,程序员既要负责分配空间,又要负
责回收内存资源,这样为程序员编程增加了很大的负担。而在 Java 中,程序员只需要负责
分配空间(也就是new
文档评论(0)