5.1 类和对象 5.1.1 定义类

5.1 类和对象

  • 可以把类当成一种自定义类型,
  • 可以使用类来定义变量,
  • 类定义的变量统称为引用变量
  • 所有类是引用类型

5.1.1 定义类

Java语言里定义类的简单语法如下:

1
2
3
4
5
修饰符 `class` 类名{
零个到多个构造器定义,
零个到多个成员变量定义,
零个到多个方法定义,
}

类的修饰符

类的修饰符可以是publicfinalabstract,或者省略修饰符。

类名要求

从程序的可读性方面来看,Java类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。

类的成员

类可以包含三种最常见的成员:构造器成员变量方法,三种成员都可以定义零个或多个。

空类

如果三种成员都只定义零个,就是定义了一个空类,这没有太大的实际意义。

类里各成员之间的定义顺序没有任何影响,各成员之间可以相互调用,但需要指出的是,** static修饰的成员不能访问没有static修饰的成员**。

成员变量由来干什么

成员变量用于定义该类或该类的实例所包含的状态数据,

方法用来干什么

方法则用于定义该类或该类的实例的行为特征或者功能实现。

构造器干什么

构造器用于构造该类的实例,Java语言通过new关键字来调用构造器,从而返回该类的实例。

什么时候系统提供默认构造器

构造器是一个类创建对象的根本途径,如果一个类没有构造器,这个类通常无法创建实例。因此,Java语言提供了一个功能:如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器

成员变量详解

定义成员变量的语法格式如下:

1
[修饰符] 类型 成员变量名[=默认值];

对定义成员变量语法格式的详细说明如下。

成员变量的修饰符

修饰符可以省略,也可以是publicprotectedprivatestaticfinal,其中publicprotectedprivate三个最多只能出现其中之一,可以与staticfinal组合起来修饰成员变量。

成员变量的类型

可以是Java语言允许的任何数据类型,包括基本类型和现在介绍的引用类型。

成员变量名

如果从程序可读性角度来看,成员变量名应该由一个或多个有意义的单词连缀而成,第一个单词首字母小写,后面每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符,成员变量用于描述类或对象包含的状态数据,因此成员变量名建议使用英文名词

默认值

定义成员变量还可以指定一个可选的默认值

方法详解

定义方法的语法格式如下:

1
2
3
4
[修饰符] 方法返回值类型 方法名(形参列表)
{
//由零条到多条可执行性语句组成的方法体
}

对定义方法语法格式的详细说明如下。

方法的修饰符

修饰符:修饰符可以省略,也可以是publicprotectedprivatestaticfinalabstract,其中publicprotectedprivate三个最多只能出现其中之一; abstractfinal最多只能出现其中之一,它们可以与static组合起来修饰方法。

方法返回值类型

返回值类型可以是Java语言允许的任何数据类型,包括基本类型引用类型.

如果声明了方法返回值类型,则方法体内必须有一个有效的return语句,该语句返回一个变量或一个表达式,这个变量或者表达式的类型必须与此处声明的类型匹配。
除此之外,如果一个方法没有返回值,则必须使用void来声明没有返回值。

方法名

方法名的命名规则与成员变量的命名规则基本相同,但由于方法用于描述该类或该类的实例的行为特征或功能实现,因此通常建议方法名以英文动词开头。

形参列表

形参列表用于定义该方法可以接受的参数,形参列表由零组到多组"参数类型 形参名"组合而成,多组参数之间以英文逗号(,)隔开,形参类型和形参名之间以英文空格隔开,一旦在定义方法时指定了形参列表,则调用该方法时必须传入对应的参数值,谁调用方法谁负责为形参赋值。

方法体

方法体里多条可执行性语句之间有严格的执行顺序,排在方法体前面的语句总是先执行,排在方法体后面的语句总是后执行

static关键字

static是一个特殊的关键字,它可用于修饰方法、成员变量等成员。

  • static修饰的成员表明它属于这个类本身,而不属于该类的单个实例,因为通常把static修饰的成员变量和方法也称为类变量、类方法
  • 不使用static修饰的普通方法、成员变量则属于该类的单个实例,而不属于该类。
  • 因为通常把不使用static修饰的成员变量和方法也称为实例变量、实例方法。

有时也把static修饰的成员变量和方法称为静态变量和静态方法,把不使用static修饰的成员变量和方法称为非静态变量和非静态方法。
静态成员不能直接访问非静态成员。

再说一遍

static相当于一个标志,有static修饰的成员属于类本身,没有static修饰的成员属于该类的实例。

构造器

构造器是一个特殊的方法,定义构造器的语法格式与定义方法的语法格式很像,定义构造器的语法格式如下:

1
2
3
4
[修饰符]  构造器名(形参列表)
{
//由零条到多条可执行性语句组成的构造器执行体
}

构造器的修饰符

可以省略,也可以是publicprotectedprivate其中之一。

构造器名

构造器名必须和类名相同。

形参列表

和定义方法形参列表的格式完全相同。

构造器不能定义返回值类型 不能用void修饰

构造器既不能定义返回值类型,也不能使用void声明。如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但Java会把这个所谓的构造器当成方法来处理,它将不再是构造器。