6类和对象
6.1面向对象概述
6.1.1对象
通常都会将对象划分为两个部分,即静态部分与动态部分。顾名思义,静态部分就是不能懂得部分,这个部分被称为“属性”,任何对象都会具备其自身属性,如一个人其属性包括高矮、胖瘦、性别、年龄等。动态部分即对象可执行的动作,这个部分称为“行为”,同样一个人,可以哭、笑、说话、行走、这些都是个人具备的行为。人类通过探讨对象的属性和观察对象的行为来了解对象。继承
6.1.2类
不能将一个事务描述成一类事物,如一只鸟类不能称为鸟类。但如果要给某一类事物一个传统的,就需要用到类这个概念
6.1.3封装
面向对象程序设计具有以下特点:封装性、继承性、多态性
封装是面向对象编程的核心思想。将对象的属性和行为封装起来,起载体就是类
类通常对客户隐藏其实现细节,这就是封装的思想。
6.1.4继承
类与类之间同样具有关系,这种关系被称为关联。关联主要描述两个类之间的一般二元关系。例如学生类与老师类也是一个关联。两个类之间的关系又很多种,继承是关联中的一种。
继承性主要利用特定对象之间的共拥有属性。例如平行四边形是四百女性,正方形、矩形也是四边形,平行四边形类与四百年信不过具有共同性,就是拥有四个边,平行四边形服用了四边形类的属性和行为,同时添加了平行四边形独有的属性和行为
在java语言中将类型于平行四边形类的类称为子类,四边形类的类称为父类或超类。注意的是,可以说平行四边形是特殊的四边形,但不能说四边形是平行四边形,也就是子类的实例都是父类的实例,但不能说父类的实例时子类的实例
6.1.5多态
在6.1.4节中介绍了继承、父类和子类、其实将父类对象应用于子类的特征就是多态例如彩色打印机和黑白打印机打印出来不同的智障
6.2类
6.2.1成员变量
对象的属性也称为成员变量,成员变量可以是任意类型,真个类中均是成员变量作用范围
下面通过一个实例来演示
例题6.1
6.2.2成员方法
使用成员方法对应于类对象的行为。以BOOK类为例子,它包含getName()和setName()两个方法,这两个成员方法分别为获取yi名称和设置book名称的方法
定义成员方法的语法格式如下:
极限修饰符 返回值类型 方法名(参数类型 参数名){
... //方法体
return 返回值;}
注意:要使用java代码中的成员方法无法返回值,可以使用void关键字表示
6.2.3极限修饰符
JAVA中的极限修修饰符包括private、public、和protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问。如果一个类的成员变量或成员方法被修饰为private,该成员变量只能在本类中被使用
下表描述了private、public、protected修饰符的修饰权限
6.2.4局部变量
在6.2.2讲过成员方法,如果在成员方法内定义一个变量,拿这个变量称为局部变量
局部变量实在方法被执行时创建,在方法执行结束时被销毁。局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误
6.2.5局部变量的有效范围
局部变量的作用范围
在互不嵌套区域可以定义相同名称和类型的局部变量
在嵌套区域中不可以定义相同名称和类型的局部变量
6.2.6this关键字
this关键字用于表示本类当前的对象,当前对象不是某个new出来的实体对象,而是当前正在编辑的类。this关键字只能在本类中使用。
this可以条用成员变量和成员方法,this关键字引用的就是本类的一个对象。在局部变量或方法参数覆盖了成员变量时,就要添加this关键字明确引用的是类成员函数局部变量或方法参数。
6.3类的构造方法
在类中,除成员方法外还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象时,类都会自动条用构造方法。
6.4静态变量和静态方法
在介绍之前,首先介绍static关键字,因为由static修饰的变量和方法被称为静态变量和静态方法
被声明为static的变量和方法被称为静态成员,静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和 “.” 运算符调用静态成员
例题6.4
6.5类的主方法
主方法是类的入口点,它定义了程序从何处开始。主方法提供对程序流向的控制,java编译器通过主方法来执行程序
语法:public static void main(String[] args){
... //方法体
}
主方法是静态的,所以如要直接在主方法中调用其他方法,则该方法必须也是静态的,
主方法没有返回值。
主方法的形参为数组,其中args[0]~args[n]分别代表程序的第一个参数到第n个参数,可以V使用args.length获取参数的个数。
例题6.6
6.6对象
Java 是一门面向对象的程序设计语言,对象是由类实例化而来的,所有问题都通过对象来对象可以通过操作类的属性和方法来解决相应的问题,所以了解对象的产生、操作和消亡是十分的。本节就来讲解对象在Java 语言中的应用。
6.6.1对象的创建
通过new操作符来创建对象。每实例化一个对象就会自动调用一次构造方法,实质上这个过程就是创建对象的过程。可以在java语言中使用new操作符条用构造方法创建对象
6.6.2访问对象的属性和行为
作业
连接
2.
6.6.3对象的引用
一个People 类的引用可以使用以下代码:
例如,people tom ;
常一个引用不一定需要有一个对象相关联。引用与对象相关联的语法如下
People tom = new People();
类名=People 引用=tom 对象的实体=new People
6.6.4对象的销毁
每个对象都有生命周期,当对象的生命周期结束时,分配给该对象的内存地址需要被回收。在其他语言中,需要用户手动回收废弃的对象。Java 拥有一套完整的垃圾回收机制,用户不必担心废弃的对象占用内存,垃圾回收器会自动回收无用却占用内存的资源。
在学习垃圾回收机制之前,读者首先需要了解何种对象会被 Java 虚拟机视为“垃圾”。主要包括以下两种情况:
1.
2.
虽然 Java 的垃圾回收机制已经很完善,但垃圾回收器只能回收那些由 new 操作符创建的对象。某些对象不是通过 new 操作符在内存中获取存储空间的,这种对象无法被垃圾回收机制所识别。在Jav中,提供了一个 finalize0方法,这个方法是 Object 类的方法,它被声明为 protected,用户可以在自己的类中定义这个方法。如果用户在类中定义了 finalize0方法,在垃圾回收时会首先调用该方法,在下一次垃圾回收动作发生时,才真正回收被对象占用的内存。
由于垃圾回收不受人为控制,具体执行时间也不确定,所以 finalize0方法也就无法执行。为此Java 提供了 System.gc0方法来强制启动垃圾回收器,这与给 120 打电话通知医院来救护病人的道理样,主动告知垃圾回收器来进行清理。