任务3.1 创建员工类
1、面向对象的基本概念
面向对象程序设计又称OOP,其思想主旨是“基于对象的编程”。面向对象编程的四个重要特征就是“封装”、“抽象”、“继承”和“多态”。
(1)类与成员
把众多的事物归纳、划分成一些类是人类在认识客观世界时经常采用的思维方法。
(2)对象
在程序设计中,对象(object)是指具有属性和方法的实体。
2、类
在程序中,类实际上就是数据类型。
(1)类的定义
类是对客观世界事物进行抽象后得到的一种复合数据类型,它将一类对象的状态和行为封装在一起。类的定义包括两部分的内容:类声明和类体。
(2)成员变量
成员变量也称属性,是事物静态特征的抽象。成员变量分为两种:类的成员变量和对象的成员变量(又称为实例变量)。
任务3.2 创建员工对象
在Java语言中,要获得一个类的对象需要两步。第一步,对象的声明;第二步,对象的初始化。
(1)对象的声明
格式如下:类名 对象名
使用前面创建的员工类来创建对象。(声明完对象后,内存中还不存在对象的实体,只是对象的引用,且目前引用为空(初始值为null))。
(2)对象的初始化
声明要创建一个对象的实际物理拷贝,并把对于该对象的引用赋值给该变量。这是通过使用new运算符实现的。new运算符为对象动态分配(即运行时分配)内存空间,并返回对它的一个作用。格式:对象名 = new 类名(参数)
等号的作用是把右边创建的对象实体所在内存空间地址赋值给左边声明的对象引用。声明对象和初始化合并到一条语句中,格式:类名 对象名 = new 类名(参数)。
(3)引用对象
在创建了类的对象后,就可以对对象的各个成员进行访问,进行各种处理。访问对象成员的一般形式为:对象名.成员变量名 对象名.成员方法名 //方法名带圆括号
运算符“.”在这里称为成员运算符,在对象名和成员变量名之间,以及对象名和成员方法名之间起到连接的作用,指明是哪个对象的哪个成员,哪个对象的哪个方法。
有声明而没有创建的对象则没有具体的实体。没有实体的对象称为空对象,不能使用空对象的成员变量和成员方法。因为空对象不对应任何实体。
(4)销毁对象
Java需要程序员用new运算符创建所需的对象,而不需要显式地销毁它们。Java的垃圾回收机制自动判断对象是否在使用,并能够自动销毁不在使用的对象,收回对象所占的资源。
(5)对象的复制
同一个类可以声明多个对象,多个对象之间可以互相复制。
第一种方式是把一个对象直接赋值给另一个对象。
第二种方式是把一个对象的各个属性值分别赋值给另一个对象。
任务3.3 隐藏员工对象属性
(1)包
1、包的概念
包(package)。Java语言允许将一组类和接口集合在一个包中。包是Java提供的一种区别类名字空间的机制,是类的组织方式。包对应一个文件夹,包中还可以再有包,称为包等级。具体而言,包是一组相关的类和接口的集合,Java的每个类都包含在相应的某个包中。
2、包的定义
通过关键字package声明。package语句必须作为Java源文件的第一条语句,用来指明该源文件定义的类所在的包。package语句的一般格式为:package <包名>(其中,package是关键字,<包名>是标识符)。包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成。
在给包取名时应该考虑包名称的唯一性。
3、包的使用
程序员可以通过import语句导入这些类。从而使用包中的这些类。‘
import语句的使用分为两种情况:
1、导入某个包中的某个类;2、导入某个包中的全部类。
import Java.util.Date;//导入包java.util中的Date类。
import Java.util.*;//导入包java.util中的全部类,不包含其子包。
4、创建包等级
用圆点“.”将每个包名分隔就能形成包等级。格式如下:
package <包1名>[.<包2名>[.<包3名>]]
注意:如果要改变一个包名,就必须同时改变对应的文件夹名。
(2)、类的封装
类的声明和使用不符合面向对象的基本思想,主要表现在如下两个方面:
.没有对类中的成员变量和类中成员方法设置访问权限。
.直接方式访问成员变量。
面向对象编程的最基本特征在于其封装性。封装性体现在以下几个方面:
- 在类的定义中设置对象中的成员变量和方法进行访问的权限;
- 提供一个统一供其他类引用的方法;
- 其他对象不能直接修改本对象所拥有的属性和方法。
1、访问权限修饰符
Java中通过设置类的访问权限和类中成员的访问权限,来进行数据的封装。
Java为对象变量提供了4种访问权限:private(私有的)、default(不加任何访问修饰符表示包访问权限)、protected(受保护的)和public(公有的)。访问权限修饰符可以修饰类和类中的属性和方法。
2、访问权限修饰符修饰类
public和default
3、访问权限修饰符修饰成员变量和成员方法
同一个类 | 同一个包 | 不同包类中的子类 | 不同包中的非子类 | |
private | yes | |||
default | yes | yes | ||
protected | yes | yes | yes | |
public | yes | yes | yes | yes |
4、构造方法的访问权限
类中默认构造方法的访问权限和类的访问权限保持一致。
(3)this关键字
在类的方法体中可以直接引用类变量,当对象调用方法时,方法中对类变量的操作实际上是在对象的域进行操作。this的使用场合有以下三种:
1、用来访问当前对象的数据成员(this.数据成员)
2、用来访问当前对象的成员方法(this.成员方法(参数))
3、当有重载的构造方法时,用来引用同类的其他构造方法(this.(参数))
任务3.4 添加员工人数属性
(1)静态修饰符 static
完全独立于该类的任何对象。
(2)static 修饰初始化块
语法格式为:[修饰符]{
//初始化块的代码
}
初始化块的代码可以包含任何任何可执行的语句,如定义局部变量、使用分支、循环等语句。
(3)static 修饰成员变量
用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。
静态变量也称为类变量、类属性,非静态变量称为实例变量、实例属性,静态成员变量的初始化先于非静态成员的初始化。
(4)static修饰成员方法
用关键字static修饰的方法称为类方法或静态方法。类方法体中只能访问类变量,而且类方法既可以通过对象来调用,也可以通过类名来调用。
在声明static的方法时,有以下几个方面的限制:
第一,仅能调用其他的static方法;
第二,只能访问static数据;
第三,不能以任何方式引用this或super。