Java(七)——Java的类,
Java(七)——Java的类,
类和对象
面向对象的程序设计过程中有两个重要概念:类(class)和对象(object,也被称为实例,instance)。比如人这个抽象概念就是一个类、人类;而张三、李四这是具体的人就是一个对象,是人这个类的实例。
1.定义类
Java语言里定义类的简单语法如下:
[修饰符] class 类名
{
零个到多个构造器定义..
零个到多个成员变量..
零个到多个方法..
}
其中,
修饰符可以是public、final、abstract,或者完全省略这三个修饰符;
类名只要是一个合法的标识符即可,但这仅仅满足的是Java的语法要求;如果从程序的可读性方面来看,Java类名必须是由一个或多个有意义的单词连缀而成的,每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符;
构造器是一个类创建的根本途径,Java语言通过new关键字来调用构造器,从而返回该类的实例。如果一个类没有构造器在,则这个类通常无法创建实例。因此,Java语言提供了一个功能:如果程序员没有为一个类编写构造器,则系统会为该类提供一个默认的构造器。一旦程序员为一个类提供了构造器,系统将不再为该类提供构造器。
成员变量用于定义该类或者该类的实例所包含的状态数据,方法则用于定义该类或该类的实例的行为特征或功能实现。
类里各成员之间的定义顺序没有任何影响,各成员之间可以相互调用,但需要指出的是,static修饰的成员不能访问没有static修饰的成员。
2.定义成员变量
定义成员变量的语法格式如下:
[修饰符] 类型 成员变量名 [=默认值];
其中,
修饰符可以省略,也可以是public、protected、private、static、final,其中public、protected、private三个最多只能出现其中之一,可以与static、final组合起来修饰成员变量。
类型可以使Java语言允许的任何数据类型,包括基本类型和现在介绍的引用类型。
成员变量名只要是合法的标识符即可,但这仅仅满足的是Java的语法要求;如果从程序的可读性方面来看,Java类名必须是由一个或多个有意义的单词连缀而成的,第一个单词首字母小写,后面每个单词首字母大写,其他字母全部小写,单词与单词之间不要使用任何分隔符。成员变量用于描述类或对象包含的状态数据,因此成员变量名建议使用英文名词。
默认值,定义成员变量还可以指定一个可选的默认值。
注意:成员变量由英文单词field意译而来,有些地方将成员变量成为属性。但实际上在Java世界里属性(由property翻译而来)指的是一组setter方法和getter方法。比如说某个类有age属性,意味着这个类包含setAge()和getAge()两个方法。另外,也有些地方将field翻译为字段、域。
3.定义方法
定义方法的语法格式如下:
[修饰符] 方法返回值类型 方法名(形参列表)
{
// 由零条到多条可执行性语句组成的方法体
}
其中,
修饰符可以省略,也可以是public、protected、private、static、final、abstract,其中public、protected、private三个最多只能出现其中之一;final和abstract最多只能出现其中之一,它们可以与static组合起来修饰方法。
方法返回值类型可以使Java语言允许的任何数据类型,包括基本类型和引用类型;如果声明了方法返回值类型,则方法体内必须有一个有效的return语句,该语句返回一个变量或一个表达式,这个变量或表达式的类型必须与声明的返回值类型匹配。除此之外,如果一个方法没有返回值,则必须使用void来声明没有返回值。
方法名的命名规则与成员变量的命名规则基本相同,但由于方法用于描述该类或该类的实例的行为特征或功能实现,因此通常建议方法名以英文动词开头。
形参列表用于定义该方法可以接受的参数,形参列表由零组到多组“参数类型 形参名
”组合而成,多个参数之间以英文逗号隔开,形参类型和形参名之间以英文空格隔开。一旦在定义方法时指定了形参列表,则调用该方法时必须传入对应的参数值——谁调用方法,谁负责为形参赋值。
方法体里多条可执行性语句之间有严格的执行顺序,排在方法体前面的语句总是先执行,排在方法体后面的语句总是后执行。
4. 定义构造器
构造器是特殊的方法,定义构造器的语法格式与定义方法的语法格式很像,如下:
[修饰符] 构造器名(形参列表)
{
// 由零条到多条可执行性语句组成的构造器执行体
}
其中,
修饰符可以省略,也可以是public、protected、private其中之一。
构造器名必须和类名相同。
形参列表和定义方法形参列表格式完全相同。
注意:构造器既不能定义返回值类型,也不能使用void声明构造器没有返回值。如果为构造器定义了返回值类型,或使用void声明构造器没有返回值,编译时不会出错,但Java会把这个所谓的构造器当成方法来处理——它就不再是构造器。
构造器不是没有返回值吗?为什么不能用void声明?
答:简单地说,这是Java的语法规定。实际上,类的构造器是有返回值的,当使用new关键字来调用构造器时,构造器返回该类的实例,可以把这个类的实例当成构造器的返回值,因此构造器的返回值类型总是当前类,无须定义返回值类型。但必须注意:不要在构造器里显式使用return来返回当前类的对象,因为构造器的返回值是由系统隐式进行了。
相关文章
- 暂无相关文章
用户点评