声明类
Java中的语法和C一样,语句都是以分号结束,区分大小写。
在Java技术中采用下列方法声明类:
<modifier> class <name>{
<attribute_declaration>
<constructor_declaration>
<method_declaration>
}
说明:
<modifier>:暂时只用"public",含义为:可以被所有其它类访问。或者不加public, 在修饰类的访问权限的时候,只有两种:1,就是加上public,表示所有类都可以访问。 2,就是什么也不写,表示本包访问权限,在讲到包的含义时再理解。
<name>:任何合法的标识符。它代表所声明类的名称。
Java中的标识符(类名,变量名,方法名)是由字母,数字,下划线(_),美圆符($)组成,数字不能用于标识符的开始。其中长度不受限制,不能使用java中的关键字,并且是区分大小写的。比如:class,void等关键字。Java中的关键字都是由小写的字母组成的,所以在我们并不知道java中有那些关键字的情况下,在定义标识符的时候,只要不全是小写的字母,就不会和java中的关键字相冲突。
<attribute_declaration>:声明属性。也就是说用变量表示事物的状态。
<constructor_declaration>:声明构造函数。也叫构造方法,也叫构造器。是用来实例化该类的实例(对象)的。
<method_declaration>:声明方法。来说明事物能够做的事情,也就是行为。
注意:属性,方法,构造函数在类中的顺序没有固定的约束。一般习惯性地先声明属性,后声明方法(习惯性地把构造方法写普通方法的前面)。
所以Person这个类的初始版本应该是:
public class Person{
}
声明属性
<modifier> <type> <name> [ = <default_value> ];
说明:
<name>:任何合法的标识符。它代表所声明属性的名称。
<modifier>:暂时只用“public”和“private”,其中private含义为:仅能被所属类中的方法访问,这称作封装。
<type>:可以是任何原始类型(基本类型)或其它类(引用类型)。
[=<default_value>]是给属性初始化为给定的值。如果没有的话初始化为默认的值。(基本类型的初始化相应的值:比如:int,short,byte,long,char(Unicode码值)初始化为0,float,double初始化为0.0,boolean初始化为false,所有的引用类型都初始化为null)。
注意:Java语言与其它语言不同,在JAVA中声明属性和初始化属性值必须一句完成。不能分开写:先声明,再另起一行初始化。
例如:
private int a ;
a=5; //错误
private int b=6;//声明一个属性 b,并初始化为6;
在类里面除了声明语句之外,是不能直接写其它执行语句的。 a=5 是赋值语句。如果要执行语句应放在语句块(方法块,初始化块等)里执行。
据此,我们的Person类成为如下样子:
public class Person{
private double weight;
}
声明构造器
<modifier> <class_name> (<parameter>) {
<statement>
}
说明:
<class_name>:是类名,构造器的名字和类名必须一样。
<modifier>:可以是public,指明可以被任何其它代码访问。private,指明仅能被同一个类中的其它代码访问。
<parameter>:向构造器传递参数,可以没有参数。传递多个参数时,参数之间用逗号分开。每个参数由参数类型和标识符组成,这和声明属性的方式很类似,但是不能向参数赋初始值。
注意:构造器必须没有返回类型,并且构造方法的名字和类名必须一样。当一个类里面如果没有声明构造方法,那么虚拟机将自动给该类一个默认的构造器(不带参数的构造器)。如果在该类里面,定义了带参数的构造方法,那么虚拟机将不再为该类提供默认的构造方法,也就是该类不能按缺省方式构建了。
我们的类此时变成:
public class Person {
private double weight;
// 该类的默认的构造器
public Person() {
}
// 带参数的构造器
public Person(double d_weight) {
weight = d_weight; // 实例化对象时,给weight属性赋初始值
}
}
声明成员方法
<modifier> <return_type> <name> ( <parameter> ){
<statement>
}
<name>:任何合法的标识符。
<modifier>:可以是public,指明可以被任何其它代码访问,private:指明仅能被同一个类中的其它代码访问。
< return_type>:指明方法返回值的类型。假如方法不返回值,应被声明为void。
<parameter>:向方法传递参数。传递多个参数时,参数之间用逗号分开。每个参数由参数类型和标识符组成。
注意:方法必须有返回类型,返回类型为void和没有返回类型是不一样的。除了返回类型void外,有其它返回类型的方法块里必须有return语句。
我们的类此时变成(Person.java):
public class Person {
private double weight;
// 该类的默认的构造器
public Person() {
}
// 带参数的构造器
public Person(double d_weight) {
weight = d_weight; // 实例化对象时,给weight属性赋初始值
}
public void eat(double temp) { // 吃饭的方法
weight = weight + temp; // 吃多少,体重就增加多少
}
public double getWeight() {// 得到人的体重属性
return weight; //返回weight属性
}
}