任务3.5 修改入职时间属性
常用的系统包如表所示:
包名 | 功能 |
java.lang | 包含Java语言的核心类库 |
java.io | 包含标准输入/输出类 |
java.util | 提供各种实用工具类 |
java.awt | 提供组件标准GUI,包含很多图形组件、方法和事件 |
java.swing | 提供图形窗口界面扩展的应用类 |
java.net | 提供Java网络通信功能的类库 |
java.sql | 提供与数据库连接的接口和类 |
java.security | 提供安全性方面的有关支持 |
(1)日期相关类
Java语言提供了以下3个日期类:Date类、Calendar类和DateFormat类,均在java.util包中。
Date类主要用于创建日期对象并获取日期;
Calendar类可获取和设置日期;
DateFormat类主要用来对日期格式化,实现各种日期格式串输出。
(2)数学类
编写程序时,有时需要进行数学运算,java,lang包中的Math类提供了用于几何学、三角学以及几种一般用途方法的浮点函数,可执行很多数学运算。Math类中的所有变量和方法都具有static和final属性,所有Math类不能派生子类。它提供一组数学函数和常量。
(3)字符串类
在Java中,字符串被定义为一个类,无论是字符串常量还是变量,都必须先生成String类的实例对象然后才能使用。
String类对象表示的是字符串常量,一个字符串常量创建以后就不能够被修改了。
String类构造函数表:
构造函数 | 介绍 |
public String() | 用于创建一个空的字符串常量 |
public String(String value) | 用于根据一个已经存在的字符串常量来创建一个新的字符串常量,该字符串的内容和已经存在的字符串常量一致 |
public String(char[] value) | 用于根据一个已经存在的字符数组来创建一个新的字符串常量 |
public String(char[] value,int offset,int count) | 用于根据一个已经存在的字符数组的子区域来创建一个新的字符串常量,参数offset指定子区域开始的下标,参数count指定所用字符的个数 |
public String(byte[] bytes) | 用于根据一个被byte数组初始化的字符串来创建一个新的字符串常量 |
public String(byte[ ] bytes,int offset,int length) | 用于根据一个被byte数组的子区域初始化的字符串来创建一个新的字符串常量。参数offset指定子区域开始的下标,参数length指定所用byte的长度 |
public String(StringBuffer buffer) | 用于根据一个已经存在的StringBuffer对象来创建一个新的字符串常量 |
StringBuffer类的构造函数表:
构造函数 | 介绍 |
public StringBuffer() | 默认构造函数,创建一个不包含字符且初始容量为16个字符的StringBuffer对象 |
public StringBuffer(int length) | 创建一个不包含字符且初始容量由参数length指定的StringBuffer对象 |
public StringBuffer(String str) | 创建一个StringBuffer对象,该对象包含参数str所指定的字符串,且初始容量等于参数str所指定的字符串的长度再加上16 |
基本数据类型与封装类对应表:
基本数据类型 | 封装类 |
byte | Byte |
short | Short |
int | Int |
float | Float |
double | Double |
boolean | Boolean |
char | Char |
long | Long |
系统属性及含义表:
系统属性名 | 含义 |
os.name | 操作系统名称 |
java.class.path | Java类库的路径 |
user.name | 用户名 |
user.dir | 用户当前的工作目录 |
file.separator | 文件分隔符 |
path.separator | 路径分隔符 |
任务3.6 创建Employee的子类
(1)继承
继承(inheritance)是面向对象程序设计的又一重要特性,是面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
1、继承的概念
继承是一种由已有类创建新类的机制。
举例父类和子类:
父类 | 子类 |
学生 | 小学生、中学生、本科生、研究生 |
形状 | 三角形、圆形、矩形、梯形 |
动物 | 鸟类、哺乳动物、鱼类 |
2、类继承的实现
类的继承是通过关键字extends来实现的,其格式为:
[访问权限] class 子类名 extends 父类名
3、继承成员变量和方法
如果一个类是另一类的子类,则子类就会拥有父类中的部分成员变量和方法。子类拥有父类的成员变量和方法有以下几种情况:
1、子类利用父类在同一个包中:子类可继承父类中的public、protected和default类型的成员变量和方法,不能继承private型的成员变量和方法。
2、子类和父类不在同一个包:子类可继承父类的public、protected的成员变量和方法,不能继承default和private型的成员变量和方法。
3、子类不能继承父类的构造方法。
4、子类的构造方法
子类不能继承父类的构造方法,当用子类的构造方法创建一个子类对象时,子类的构造方法总是先调用父类的某个构造方法。
(5)覆盖
子类除了可以继承父类中的成员变量和成员方法,还可以增加自己的成员变量和成员方法,也可以根据需要重写父类的方法。当一个父类成员不适合该子类时,子类会以恰当的方式重新定义它,此时父类中被重写的成员变量和成员方法在子类终究被隐藏了。
2、关键字final
final关键字可用于修饰类、变量和方法。
(1)final关键字修饰变量
final关键字既可以修饰成员变量(包括类变量和实例变量),也可以修饰局部变量、形参。
(2)final关键字修饰方法
final关键字修饰的方法不能被重写,在使用继承编写类的时候,如果不希望子类重写父类的某个方法,可以使用final关键字修饰该方法。
(3)final关键字修饰类
用final关键字修饰一个类,意味着该类成为不能被继承的最终类。
任务3.7 创建抽象类
(1)抽象类
在定义一个类的时候,经常会碰到这样的情况:一些方法对于所有的对象都是合适的,但有些方法只对某个特定类型的对象才有意义。这些方法在这个类中是不能实现的,把这种类定义为抽象类。
抽象类的子类必须实现其父类定义的每一个抽象方法,若没有实现父类的所有抽象方法,则该子类也应该定义为抽象类。
1、抽象类的实现
抽象类由abstract修饰,其格式是:
abstract class 类名
{
类成员定义
}
抽象类也可以包含非抽象的方法。
2、抽象方法(abstract method)
在Java中,只声明而没有实现的方法称为抽象方法,其语法规则如下:
abstract 返回值类型 抽象方法名([<形式参数列表>])
(2)接口
Java只支持单继承机制,不支持多重继承,即一个类只能有一个父类。
1、接口的概念
接口就是方法定义和常量值的集合。
接口的使用方法是:首先定义一个接口,可以先把它理解成一个特殊的类,然后在某个类中要使用这个接口时,就在这个类的定义时声明要实现某个接口。
2、接口的定义
接口的定义包括接口声明和接口体两部分,格式如下:
[修饰符] <interface> <接口名> [extends 父接口列表]{
[public] [static] [final] 变量名 = 初始值;//静态常量
[public] [abstract] 返回值 方法名([参数列表]) throws[异常列表]//方法声明
}
接口有如下特点:
1、接口用关键字interface来定义,而不是class;
2、接口中定义的变量全部是静态变量,而且是最终的静态变量。接口还可以用来实现不同类之间的常量共享;
3、接口中没有自身的构造方法,而且定义的方法都是抽象方法,即只能提供方法的定义,而不提供具体的实现;
4、接口采用多重继承机制,而不是采用类的单重继承机制。
3、接口的继承
接口的继承和类的继承不一样。接口支持多继承,即一个接口可以有多个直接父接口。子接口扩展某个父接口,将会继承父接口里定义的所有抽象方法、常量属性等。
4、接口的实现
在类中,接口实现的格式如下:
类修饰符 class 类名 [extends 父类名][implements 接口名列表]{
//类中重写接口的抽象方法
}