JAVA中,类是程序构成的基本要素.在JAVA平台中,可以认为程序都是类组成的.
1.类的声明
1-1.最基本最简单的类的声明形式:
class 类名{
//属性、构造函数和方法声明
}
[注:]
1).class关键字是必需的;
2).类名的命名规则:第一个字母要大写,后面每个单词的首字母也要大写.例如:
class AutoCar{
//属性、构造函数和方法声明
}
1-2.有访问权限的类的声明形式:
[类修饰符] class 类名{
//属性、构造函数和方法声明
}
可以作类修饰符的关键字如下:
public:表示此类可以被JAVA所有软件包使用;
private:
abstract:
final:
strictft:
1-3.表明此类其父类信息的声明形式:
[类修饰符] class 类名 [extends 父类名称]{
//属性、构造函数和方法声明
}
关键字extends来表明该类是从哪个类派生过来的.
1-4.实现接口的类的声明形式:
[类修饰符] class 类名 [extends 父类名称] [implements 接口名称]{
//属性、构造函数和方法声明
}
1-5:注意事项:
1).同一个JAVA源文件中可以有多个类,但是不能包含两个或两个以上的带有public修饰词的类;
2).如果上JAVA源文件中某个类前面有public修饰词时,那么含有此类的源文件必须与此类的类名相同.
2.类体
类的主体简称类体,指的是类名后面大括号的内容.
2-2.类体的内容之成员变量:
类体的内容中的成员变量包括:字段、局部变量、参数等.
1).字段:
是指类中的成员变量.如下:
public class AutoClass{
private String brand;
private float exhaust;
private int speed;
}
其中,brand、exhaust和speed都是类AutoCar的"字段".
字段的声明由三部分组成:
[修饰符] 数据类型 变量名称;
2).局部变量
类方法中的变量.JAVA平台的方法理解成C中的函数即可.
3).参数
类方法中的参数.其意义和C中的函数参数一样.
2-3.类体内容之成员方法
JAVA平台的类成员方法和C函数意义一样.
1).JAVA平台类体的成员方法声明形式如下:
[方法修饰符] 返回类型 方法名称(方法的参数列表){
//方法体语句
}
和C语言函数声明形式唯一不同的是JAVA平台的成员方法最前面多了个"[方法修饰符]".这里是指public、private等,对此类中的成员方法的访问权限.
2).方法签名:
签名是JAVA平台区实现方法重载的标准.如下:
public int getMaxValue(int value1,int value2){
//Your Code.
}
此方法的签名为:
getMaxValue(int,int)
签名分成:方法名、参数类型、参数个数三部分.JAVA语言依据此来区分应该选用哪个方法来重载.
3).类体方法的调用.
JAVA平台类的调用形式和C中结构体(struct)引用很相仿.如下面示例:
public class PassMessageDemo{
public static void main(String[] args){
Hello hello = new Hello( ); //声明一个Hello类的实例对象
hello.sayHello( ); //调用对象hello的sayHello方法
hello.sayHello( ); //调用对象hello的sayHello方法
hello.sayHello( ); //调用对象hello的sayHello方法
}
}
class Hello{
//定义一个表示问候的成员方法
void sayHello( ){
System.out.println("Hello,good morning!");
}
}
4).类体方法实现类"字段"的访问接口
有时候在一个类里面的"字段"被private修饰符修饰的时候,只能在类内部本身可访问,不能被外部类去访问.这时候我们可以实现一个外部类可访问的类方法(public)来实现对类内部私有字段的间接访问.如下面示例:
public class AutoCar{
private String brand; //表示汽车的品牌
private float exhaust; //表示汽车的排汽量
private int speed; //表示汽车的速度
//获得属性brand的值
public String getBrand(){
return brand;
}
//获得属性exhaust的值
public float getExhaust(){
return exhaust;
}
//获得属性speed的值
public int getSpeed(){
return speed;
}
//设置属性speed的值
public void setSpeed(int newSpeed){
speed = newSpeed;
}
}
5).方法重载
假设有这样一种情况:我们要做一个类来绘制各种类型的数据(字符串、整数等),如果为每一个方法都起一个名字是很麻烦的.如:
drawString()、drawInteger()、drawFloat()等.我们可以只实现几个名字均为draw()的方法,通过给这个方法传递不同的参数类型,交由编译
器来处理.如下:
public class DrawDate{
public void draw(String s){
...
}
public void draw(int i){
...
}
public void draw(int i,double f){
...
}
}
3.类的构造器
JAVA平台下构造器的意义是构造并初始化实例对象.它有以下特点:
1).构造器和类名一样;
2).构造器和方法一样,可以有0个、1个或多个参数;
3).构造器没有反回值和返回类型;
4).构造器不能被显式调用.构造器总是和new运算符一起被调用,在创建一个类的对象的同时,系统会自动调用该类的构造器为新对象初始化.
下面给出一个示例:
class AutoCar
{
private String brand;
private float exhaust;
private int speed;
public AutoCar(String oriBrand,float oriExhaust,int oriSpeed)
{
brand = oriBrand;
exhaust = oriExhaust;
speed = oriSpeed;
}
public void autoCarInfo()
{
System.out.println("brand = " + brand );
System.out.println("exhaust = " + exhaust);
System.out.println("speed = " + speed);
}
}
public class ReloadDemo{
public static void main(String[] args){
AutoCar autoCar = new AutoCar("Audi",1.5f,80);
autoCar.autoCarInfo();
}
}
输出结果:
root@seven-laptop:~/learn/java/java_base/test# java ReloadDemo
brand = Audi
exhaust = 1.5
speed = 80
root@seven-laptop:~/learn/java/java_base/test# vim ReloadDemo.java
4.向方法或构造器内传递信息
当向一个对象传递消息时,只能通过此对象暴露出来的手段进行交互(如方法、接口等).向方法和构造器传递参数和C中的函数调用差不多.不再累赘.