Java中类的定义
本文介绍了Java中类的定义规范,包括:类的定义、成员变量的声明、成员方法的声明和构造方法的声明,最后通过一个例子来说明如何定义类。
目录
1. 类的定义
类是具有相同属性(成员变量)和行为(成员方法)的一组对象的集合。类声明就是定义一个类,其语法格式如下:
[访问符][修饰符] class 类名 [<类型参数列表>] [extends 父类名][implements 接口名列表]{
[成员变量列表]
[成员方法列表]
}
其中,
访问符: | 访问符用于指明类的访问权限,可以是public和缺省两种。public表示该类可以被任何其它类所使用,如果是缺省,则表示该类只能被同一包中的其它类所使用。 |
修饰符 | 修饰符用于指明所定义类的特性,可以是abstract或final。abstract表示该类是一个抽象类,抽象类不能被实例化。final表示该类是一个终止类,终止类不能被继承。abstract和final不能被同时使用来修饰一个类。 |
class | 用于定义类的关键字。 |
类名 | 类名是指所定义类的名称,类名是一种标识符,其定义要遵循标识符的命名规范。类名一般为名词,含有大小写字母,每个字的首字母一般要大写。 |
类型参数列表 | 如果在类的声明中包含一个或多个类变量或接口变量,则称为该类为一个泛型类。 |
extends | extends是Java用于声明父类的关键字,每个类最多只能声明一个父类,子类可以继承父类的非私有变量和方法。 |
implements | 用于声明实现接口关键字,一个类可以实现多个接口,各接口名之间以逗号隔开,其形式为:implements 接口1, 接口2, … ,接口n。 |
成员变量列表 | 成员变量用于描述对象的特征,一个类可以包含零到多个成员变量,不同成员变量之间以分号(;)隔开。 |
成员方法列表 | 成员方法用于描述对象的行为,一个类可以包含零到多个成员方法,不同方法之间不需要加分号(;)。 |
2. 成员变量的声明
成员变量描述了类的属性信息。一个成员变量可以是基本类型变量,也可以是对象、数组等引用类型数据。成员变量声明的语法格式如下:
[访问符][修饰符列表] 变量类型 变量名 [=初始值];
其中,
访问符 | 访问符说明该成员变量的访问权限,即定义哪些类可以访问该成员变量,成员变量的访问符可以是public、protected、private和缺省之一。public表示该变量可以被任何类所访问;protected表示该变量允许被类自身、子类以及相同包中的类所访问;private表示该变量只能被本类所访问;缺省表示该变量允许被类自身、同一包中的类以及同一包中的子类所访问。 |
修饰符列表 | 修饰符说明该成员变量的特性,其可以是static、final、transient、volatile之一或者它们的组合,多个修饰符之间用空格隔开。static表示该变量是一个静态变量或类变量,静态变量可以被该类的所有对象所共享,其不需要通过创建对象来使用,可以直接通过类来访问;final表示该变量是一个常量,常量必须被赋初值,并且在程序运行中该值不能被改变;transient表示该变量是一个不可持续化的变量;volatile表示该变量是一个可能同时被并行运行中的几个线程所控制和修改的变量,volatile和final不能同时出现。 |
变量类型 | 变量类型可以是基本数据类型,也可以是引用数据类型。 |
变量名 | 变量名是指所定义成员变量的名称,变量名是一种标识符,其定义要遵循标识符的命名规范。变量名一般为名词,含有大小写,首字母大写,其余各字的首字母大写。 |
初始值 | 在声明一个变量的同时可以给该变量赋初始值,初始值可以是一个常量、变量或者表达式。 |
3. 成员方法的声明
成员方法用来定义类的行为,其可以对类中的成员变量进行操作。成员方法声明的语法格式如下:
[访问符] [修饰符列表] <返回类型> 方法名([参数列表]){
方法体
}
其中,
访问符 | 访问符说明该方法的访问权限,即定义哪些类可以访问该方法。与成员变量一样,成员方法的访问符也是public、protected、private和缺省之一。public表示该方法可以被任何类所访问;protected表示该方法允许被类自身、子类以及相同包中的类所访问;private表示该方法只能被本类所访问;缺省表示该方法允许被类自身、同一包中的类以及同一包中的子类所访问。 |
修饰符列表 | 修饰符说明该方法的特性,其可以是static、final、abstract、synchronized之一或者它们的组合,多个修饰符之间用空格隔开。static表示该方法是一个静态方法或类型方法,静态方法不需要通过创建对象来使用,可以直接通过类来访问;final表示该方法是一个终止方法,终止方法不允许被子类所重写;abstract表示该方法是一个抽象方法,抽象方法没有方法体,其需要通过子类重写该方法来实现,abstract不能与final同时出现,即一个方法不能既是抽象方法又是终止方法;synchronized表示该方法是一个线程同步方法。 |
返回类型 | 返回类型可以是一个基本数据类型,也可以是一个引用数据类型。如果一个方法没有返回值,其返回类型被说明为void。 |
方法名 | 方法名用于指定所定义的成员方法的名称,方法名是一种标识符,其定义要遵循标识符的命名规范。变量名一般为动词或动名词,含有大小写,首字母大写,其余各字的首字母大写。 |
参数列表 | 一个成员方法可以包含零到多个参数,不同参数之间用逗号隔开,每个参数是由参数类型和参数名称组成的,参数类型可以是基本数据类型,也可以是引用数据类型。 |
方法体 | 方法体用一对花括号({})括起来,是成员方法定义的主要部分,其包含了实现该方法的代码。在方法体内可以定义局部变量,它的作用域仅在该方法体内,外部是不可见的。 |
4. 构造方法的声明
构造方法是一种特殊的方法,其功能是用于创建对象,并对其进行初始化。构造方法定义的语法格式如下:
[访问符] 构造方法名([参数列表]){
方法体
}
其中,
访问符 | 构造方法的访问符是public和public、protected、private和缺省之一,其访问权限与成员方法一致。 |
构造方法名 | 构造方法的名称与类名相同。 |
参数列表 | 构造方法可以包含零到多个参数,不同参数之间用逗号隔开,每个参数是由参数类型和参数名称组成的,参数类型可以是基本数据类型,也可以是引用数据类型。 |
方法体 | 构造方法的方法体一般用来对所创建的对象进行初始化。 |
在定义构造方法时应注意以下几点:
(1)构造方法没有返回类型。
(2)构造方法不能从父类中继承。
(3)系统默认提供一个无参数的构造方法。
(4)如果定义带参数的构造方法,则需要加上默认构造方法
(5)构造方法不能直接通过方法名调用,需要通过new运算符调用。
5. 类定义的示例
下面代码定义了一个矩形类,类名为Rectangle,其所在的包为graph,该类包含两个成员变量:长度和宽度,其变量名分别为length和width,它们的数据类型为double,访问权限为缺省。该类包含一个带参数的构造方法,其功能是给长度和宽度赋初值;该类包含一个权限为公有的方法其功能getArea(),根据长度和宽度计算矩形的面积并返回。
package graph;
/*
* 矩形
*/
public class Rectangle {
double length; //长度
double width; //宽度
/*
* 带参数构造方法
*/
public Rectangle(double a,double b) {
length=a;
width=b;
}
/*
* 计算矩形面积方法
*/
public double getArea() {
double area=length*width;
return area;
}
}
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)