1、从抽象到类
抽象的关键是抓住事物的两个方面:属性和功能。在实际生活中,我们每时每刻都与具体的事物在打交道,如我们用的钢笔、骑的自行车、乘坐的公交汽车等等。我们现在就可以对经常见到的卡车、公交汽车、小轿车进行抽象,找出它们共有的属性和功能,这里只会列举出部分:
属性:运行速度、发动机的功率。
功能:加速、减速、获取运行速度、设置发动机功率、获取发动机功率。
抽象的目的是从具体的实例中抽取共有属性和功能形成一种数据类型,比如我们的机动车类Vehicle,那么一个具体的轿车就是Vehicle类的一个实例,即对象。一个对象将自己的数据和对这些数据的操作合理有效的封装在一起,如我们的轿车调用“减速”改变的就是自己的运行速度。
2、类
类是组成Java程序的基本要素。类封装了一类对象的状态和方法。类是用来定义对象的模板。
类的实现包括两部分:类声明和类体。基本格式为:
class 类名 {
类体的内容
}
class是关键字,用来定义类。“class 类名”是类的声明部分,类名必须是合法的Java标识符。两个大括号以及之间的内容是类体。
3、类的声明
class Vehicle {
……
}
其中的“class Vehicle”称作类声明;“Vehicle”是类名。
◆ 给类命名时,遵守下列编程风格(这不是语法要求的,但应当遵守):
1.如果类名使用拉丁字母,那么名字的首字母使用大写字母,如。
2.类名最好容易识别、见名知意。当类名由几个“单词”复合而成时,每个单词的首字母使用大写。
4、类体
◆类声明之后的一对大括号“{”,“}”以及它们之间的内容称作类体,大括号之间的内容称作类体的内容。
◆类体的内容由两部分构:一部分是变量的声明,用来刻画属性;另一部分是方法的定义,用来刻画功能。
PS:见示例。
5、类的变量成员
类体分为两部分:一部分是变量的声明,另一部分是方法的定义。
变量声明部分所声明的变量被称做域变量或成员变量
1).成员变量的类型:成员变量的类型可以是Java中的任何一种数据类型,包括基本类型:整型、浮点型、字符型;引用类型:数组、对象和接口。
2).成员变量的有效范围:成员变量在整个类内都有效,其有效性与它在类体中书写的先后位置无关。
3).编程风格
(1)一行只声明一个变量。
(2)变量的名字符合标识符规定。
(3)变量名字见名知意,避免容易混淆的变量名字。
6、类方法
方法的定义包括两部分:方法声明和方法体。一般格式为:
方法声明部分 {
方法体的内容
}
方法声明包括方法名和方法的返回类型,如:
double getSpeed() {
return speed;
}
注:方法的返回类型、方法的参数、方法的名字
1)、return语句的作用:
a、返回一个值,这个值可以是任意类型。
b、使程序返回到操作系统(即终止程序)
2)、java中对于一个函数,不论有没有返回值类型,都可以带有return 语句。但是区别在于,return 语句是否可以返回一个值(这取决与该函数的返回值类型)。
a、如果函数有返回值类型(即返回值类型不为void ),则必须带有返回相应类型值的return 语句。
b、如果函数没有返回值(即返回值类型为void ),则函数中return 语句(如果存在return语句!)的后面不能加任何的变量。(该情况下的函数中也可以没有return 语句,但是如果有的话,return 只能作为返回操作系统的作用使用。)
方法声明之后的一对大括号“{” ,“}”以及之间的内容称作方法的方法体。方法体的内容包括局部变量的声明和Java语句。
在方法体中声明的变量和方法的参数被称作局部变量。
局部变量只在声明它的方法内有效,而且与其声明的位置有关。方法的参数在整个方法内有效,方法内的局部变量从声明它的位置之后开始有效。如果局部变量的声明是在一个复合语句中,那么该局部变量的有效范围是该复合语。
7、注意事项
1、如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。
如果想在该方法中使用被隐藏的成员变量,必须使用关键字this 。
2、类体的内容由两部分构成:一部分是变量的声明,另一部分是方法的定义。 对成员变量的操作只能放在方法中,方法可以对成员变量和该方法体中声明的局部变量进行操作。在声明成员变量时可以同时赋予初值,但是不可以在类体中有单独的赋值语句(不可以有变量的声明和方法的定义以外的其它语句)。
8、实例代码
public class Vehicle {
double speed; // 变量声明部分,刻画速度
int power; // 变量声明部分,刻画功率
void speedUp(int s) { // 方法定义,刻画加速功能
speed = speed + s;
}
void speedDown(int d) { // 方法定义,刻画减速功能
speed = speed - d;
}
void setPower(int p) {
power = p;
}
int getPower() {
return power;
}
double getSpeed() {
return speed;
}
}