第三章:对象和类
类中的属性和方法
1. 属性描述实体可以量化的特征
2. 使用方法描述实体具体的行为
对象同时具有属性和方法两项特性
对象的属性和方法通常被封装在一起,共同体现事物的特性,二者相辅相成,不能分割。
什么是类:类是摸子,确定对象会拥有的特征(属性)和行为(方法)
面向对象的优点:
1. 便于程序模拟现实世界中的实体
2. 隐藏细节
3. 可重用
如何创建一个对象?
使用关键字new
类和对象的区别:
a) 类使用来组织代码
b) 对象使用来封装数据
c) 类是对象的模板。
d) 对象是类的实例化。
e) 类是一个抽象的概念。
f)对象是一个具体的实例
如何定义一个类,类的属性和方法?
使用关键字:class
toString()方法的有点是什么?
不用显示调用,直接可以使用对象。
包:
包的好处
1.利于查找
2.利于管理
3.避免类重名
如何声明包?
关键字:package com.sxt.***;
如何导入包?
关键字:import java.util.Date; java.util.Scanner;
封装
封装就是隐藏实现细节
1. 将属性私有化,提供供有方法访问私有属性
2. 通过这些公有方法访问私有属性
封装的好处:
增加了数据访问限制,增强了程序的可维护性
构造方法:负责对象成员的初始化工作,为实例变量赋予合适的初始值
构造方法满足语法规则:
1. 方法名与类名相同
2. 没有返回类型
3. 使用关键字new来调用构造方法
方法重载:方法名相同,参数类型不同
Java单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例
单例模式的特点:
1. 一个类只能有一个实例
2. 自己创建这个实例
3. 整个系统都要使用这个实例
优点:
1. 能避免实例重复创建
2. 应用于避免存在多个实例引起的程序逻辑错误的场合
3. 较节约内存
继承
继承的概念:子类具有父类的一般特性(属性和行为),以及自身的特殊的特性
使用关键字extends来定义继承
使用继承的优点:
1.可以实现代码的复用
2.可维护性
方法重写:子类和父类的方法具有相同的名称、参数列表、返回类型
多态:具有表现多种形态的能力的特征
如何实现多态
1. 子类重写父类的方法
2. 要有继承
3. 父类引用指向子类对象
多态的好处:程序的可扩展性及维护性增强
抽象类
什么是抽象类:是一种模版模式,抽象类为所有子类提供了一个通用模版,子类可以在这个模版上进行扩展。
抽象方法:只有声明没有方法体
抽象方法的意义:方法的设计和实现分离了
抽象类的定义:使用关键字abstract
抽象类的优点:可以避免子类设计的随意性;
抽象类的要点:
1. 有抽象方法的类只能定义抽象类;
2. 抽象类不能实例化,既不能用new来实例化抽象类;
3. 抽象类可以包含属性、方法、构造方法。但是构造方法不能用new来实例,只能用来被子类调用。
4. 抽象类只能用来被继承。
5. 抽象方法被子类实现。
接口
接口的定义:
1. 是一个特殊的抽象类
2. 接口中只有抽象方法和常量
3. 关键字interface
4. 接口就是定义规范
接口定义格式:
【访问修饰符】 interface 接口名 [extends 父接口1,父接口2,...]{常量定义总是:public static final方法定义总是:public abstract}
如何使用接口:
1. 子类通过implements实现接口中的规范
2. 接口不能创建实例,但是可用于申明引用变量类型
3. 一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public
4. 接口支持多继承
异常
Java异常是Java提供的用于处理程序中错误的一种机制。
为什么需要异常处理机制:减少程序关注的重点,降低程序负载度
1.Java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给Java运行时系统,这个过程称为抛出异常。
2.当java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获异常
异常分类
Error:称为错误,由java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理
Exception:所有异常类的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显示的声明或捕获
Runtime Exception:一类特殊的异常,如被 0 除、数组下标超范围等,其产生比较频繁,处理麻烦,如果显式的声明或捕获将会对程序可读性和运行效率影响很大。因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。 try语句try {…}语句指定了一段代码,该段代码就是一次捕获并处理例外的范围。在执行过程中,该段代码可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对 这些异常做相应的处理。如果没有例外产生,所有的catch代码段都被略过不执行。 catch语句在catch语句块中是对异常进行处理的代码,每个try语句块可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象。在catch中声明的异常对象(catch(SomeException e))封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法获取这些信息。getMessage( ) 方法,用来得到有关异常事件的信息。printStackTrace( ) 方法,用来跟踪异常事件发生时执行 堆栈的内容。 finally 语句finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序 的状态作统一的管理。无论try所指定的程序块中是否抛出例外,finally所指定的代码都要被执行。通常在finally语句中可以进行资源的清除工作,如:1.关闭打开的文件2.删除临时文件throw和throws的区别
Throw用于主动产生并抛出异常
Throws用于方法定义时声明可能抛出的异常
异常捕获处理:
应该先将小异常放在上面,先逮小在逮大
finalize 关键字:
一个类重写了Object的finalize,使用System.gc();对该对象进行回收
finalize()在什么时候被调用
1.所有对象被Garbage Collection时自动调用,比如运行System.gc()的时候.2.程序退出时为每个对象调用一次finalize方法。3.显式的调用finalize方法final
final修饰的方法不能够被子类重写
final不仅可以修饰类,还可以修饰变量,被final修饰的变量就是一个常量,只能赋值一次。
final修饰的类不能被继承