一:类
类是JAVA语序的基本要素,一个JAVA应用程序就是由若干个类所构成。类是JAVA语言中最重要的“数据类型”,类声明的变量被称作“对象变量”,简称“对象”。
类的定义包含两个部分:类声明和类体。基本格式为:
class 类名{
类体的内容
}
class是关键字,用来定义类。“class类名”是类的声明部分,类名必须是合法的JAVA标识符。两个大括号及其之间的部分为类体。
类声明:给类命名时,应当遵守以下规则:
(1)如果类名使用拉丁字母,那么名字的首字母使用大写字母,如“Hello、Time...”
(2)类名最好容易识别,见名知意。当类名由几个“单词”复合而成时,应遵守驼峰习惯。例如:
class people{
.
.
.
}
class 人类{
.
.
.
} // "class people"和"class 人类"称为类声明,“people”和“人类”分别是类名
类体:类的目的是抽象出一类事物共有的属性和行为,并用一定的语法格式来描述所抽象出的属性和行为。类使用类体来描述所抽象出的行为和属性,类声明之后的一对大括号“{” “}”以及它们之间的内容称作类体,大括号之间的内容称作类体的内容。
抽象的关键是抓住事物的两个方面:属性和行为。因此类的内容由两部分组成:
(1)变量的声明:用来存储属性的值。(体现对象的属性)。
(2)方法的定义:方法可以对类中声明的变量进行操作。(体现对象所具有的的行为)。例如:
class Lader{
float above; //梯形的上底(变量声明)
float bottom; //梯形的下底(变量声明)
float height; //梯形的高(变量声明)
float area; //梯形的面积(变量声明)
float computerArea(){ //定义方法computerArea
area=(above+bottom)*height/2.0f;
rerturn area;
}
void setHeight(float h){ //定义方法setHeight
height=h;
}
} // 类体中的声明变量部分声明了4个变量;方法定义部分定义了两个方法
类体中的变量的声明部分所声明的变量被称为成员变量或域变量。
成员变量:
成员变量的类型:成员变量的类型可以是JAVA中任何一种数据类型,包括基本数据类型:整型、浮点型、字符型、逻辑性等;引用型:数组、对象和接口。
成员变量的有效范围:成员变量在整个类内都有效,其有效性与它在类体中书写的先后顺序无关。例如:
class Lader{
float above; //梯形的上底(变量声明)
float area; //梯形的面积(变量声明)
float computerArea(){ //定义方法computerArea
area=(above+bottom)*height/2.0f;
rerturn area;
}
float bottom; //梯形的下底(变量声明)
void setHeight(float h){ //定义方法setHeight
height=h;
}
float height; //梯形的高(变量声明)
}
不提倡把成员变量的声明分散的写在方法之间,人们习惯先介绍属性,再介绍行为。
编程风格:
❶一行 只声明一个变量,如:
float above;
float bottom;
❷变量的名字除了符合标识符规定外,名字的首单词的首字母使用小写,如果变量的名字由多个单词组成,从第二个单词开始遵循驼峰规则。
❸变量的名字做到见名知意。
二:方法
我们已经知道一个类的类体由两部分组成:变量的声明和方法的定义。
方法的定义包含两部分内容:方法头和方法体。
一般格式为:
方法头{
方法体的内容
}
方法头由方法的类型、名称和名称之后的一对小括号以及其中的参数列表组成。无参数方法定义的方法头中没有参数列表,即方法名称之后一对小括号中无任何内容。如:
int speak(){ //无参数的方法头
return 23;
}
int add(int x,int y,int z){ //有参数的方法头
return x+y+z;
}
方法编程规则:
❶方法的参数可以是任意的JAVA数据类型。
❷当一个方法是void类型时,该方法就不需要返回数据。
❸很多方法声明都会给出方法的参数,参数是用逗号隔开的一些变量声明。
❹方法的名字必须符合标识符的规定,给方法命名的习惯和给变量命名的习惯相同。
方法体:方法声明之后的一对大括号{,}以及它们之间的内容称为方法的方法体。方法体的内容包括局部变量的声明和JAVA语句。即在方法体中可以对成员变量和方法体中声明的局部变量进行操作。在方法体中声明的变量和方法的参数被称为局部变量。
int getSum(int n){ //参数变量n是局部变量
int sum=0; //声明局部变量sum
for(int i=1;i<=n;i++){ //for循环语句
sum=sum=1;
}
return sum; //return语句
}
方法声明的规定:
❶局部变量只在方法内有效;并且与声明位置有关。
❷方法的参数在整个方法内有效,方法内的局部变量从声明它的位置之后开始生效。
public class A{
int m=10,sum=0; //成员变量,在整个类中有效
void f(){
if(m>9){
int z=10; //z仅仅在该复合语句中有效
z=2*m+z;
}
for(int i=0;i<m;i++){
sum=sum+i; //i仅仅在该复合语句中有效
}
m=sum; //合法,因为m和sum有效
z=i+sum; //非法,因为i和z已失效
}
}
区分成员变量和局部变量:
class Tom{
int x=10,y;
void f(){
int x=5;
y=x+x; //y得到的值是10,不是20.
}
}
❶如果局部变量的名字与成员变量的名字相同,那么成员变量被隐藏,即该成员变量在这个方法内暂时失效。(如果在该方法中使用被隐藏的成员变量,必须使用关键字this)
class Tom{
int x=10,y;
void f(){
int x=5;
y=x+this.x; //y得到的值是15.
}
}
❷成员变量有默认值,但局部变量没有默认值,因此在使用局部变量前,必须保证局部变量有具体的值。
注:❶类的内容由两部分组成:变量的声明和方法的定义。
❷对成员变量的操作只能放在方法中。
❸ 方法使用各种语句对成员变量和方法体中声明的局部变量进行操作。
class InitError{
int x=10,y; //y的默认值是0
void f(){
int m; //m没有默认值,但编译无误
}
x=y+m; // 无法通过编译,因为在使用m之前未指定m的值
}