从零开始学java(十二)--为对象定义类
- 对象的状态,也称为特征或属性,是由具有当前值的数据域来表示的。如,员工对象具有数据域name和age,标识员工的属性。
- 对象的行为,也称为动作,是由方法定义的。调用对象的一个方法就是要求对象完成一个动作。如,可以为矩形对象定义一个名为getArea()方法返回矩形的面积。
类是组成java程序的基本要素,封装了一类对象的状态和行为,是这一类对象的原形。定义一个新的类,就创建了一种数据类型;实例化一个类就得到一个对象
类的定义
一个类的定义包括两个部分:类声明和类体的定义。
类声明
类声明的一般格式为:
[public][abstract|final] class ClassName [extends SuperClass]
[implements InterfaceNameList]{
//1.成员变量声明
//2.构造方法定义
//3.成员方法定义
}
- 类的修饰符
类的访问修饰符(控制类的访问与被访问权限)可以是public或缺省(即默认)。public表示类是公共类,可悲任何包中的类使用。若不加public修饰符,类只能被同一个包(package)中的其他类使用。abstract抽象类,final最终类。
- extends SuperClass
如果一个类要继承某个类需要使用extends,SuperClass为父类名。如果没有指明,默认继承Object类。
- Java在java.lang包中有一个Object类。
- 所有Java类都直接或间接扩展Object类。
- 所有Java类都是Object类的子类Object类是所有类的超类。
- Object类本身没有超类。
- Object类的引用变量可以保存任何类的对象的引用。
- implements InterfaceNameList
如果定义的类需要实现接口,则使用implements InterfaceNameList选项。一个类可以实现多个接口,实现多个接口时需要用都靠分开。
- 类体
类生命结束后是一对大括号,大括号括起来的部分称为类体(class body)。类体中通常包含三部分内容:构造方法(创建类实例,创建对象并初始化对象状态),成员变量(定义对象状态)和成员方法(定义对象行为)。
public class Employee{
public String name ;//成员变量
public int age;//成员变量
public double salary ;//成员变量
public Employee{
}//无参数构造方法
public void sayHello()//成员方法
{
System.out.println("My name is " + name);
}
public double computeSalary(int hours,double rate)//成员方法
{
salar = salary + hours * rate;
return salary;
}
}
成员变量的定义
成员变量的声明格式为:
[public | protected | private | ]① [static]② [final]③ type variableName [=value] ;
说明:
- 变量的访问修饰符①
public:公共变量可以被任何方法访问;
protected:保护变量,可以被同一包中的类或子类访问;
private:私有变量,只能被同一个类的方法访问
无修饰符:变量只能被同一个包中的类访问
- 实例变量和静态变量②
static修饰,则该变量称为静态变量,又称为类变量.没有static修饰的为实例变量.
- 最终变量(标识符常量)③
使用final修饰的变量称为最终变量(标识符常量),常量可以在声明的时候赋值,一旦赋值便不可更改.
构造方法的定义
构造方法也叫构造器,是类的一种特殊方法.
Java中的每个类都有构造方法,其作用是创建对象并初始化对象的状态.
成员方法的定义
成员方法用来实现对象的动态特征.
成员方法的定义包括方法的声明和方法体的定义,一般格式如下:
//成员方法的定义包括方法的声明和方法体的定义
[public | protected | private | ]
[static] [final | abstract]
returnType methodName ( [ pparamList ] )
{
/*方法体*/
} ;
说明:
- 方法的返回值
返回值的类型可以是任何数据类型,包括基本数据类型和引用数据类型.若一个方法没有返回值,那么returnType应为全局变量.
- 方法参数
方法名的后面是一对括号,括号内是方法的参数列表.
声明格式为:
type paramName1 [,type paramName2]
- 访问修饰符
protected:可以在同一个类,同一个包中的类一级子类中被调用.
缺省访问修饰符,可以同一个类的方法访问和同一个包中的类访问.
- 实例方法和静态方法
无static→实例;有static→静态
- final和abstract方法
final修饰的方法为最终方法,不可被覆盖,方法的覆盖与继承有关系.
abstract:抽象方法.