Skip to main content

01 Objects, etc

原文标题为Objects, Classes, Interfaces, Packages, and Inheritance。

像标题所说的,本文介绍了对象、类、接口、包和继承的概念。

对象和类的基础语法省略。示例代码为

class Bicycle {

int cadence = 0;
int speed = 0;
int gear = 1;

void changeCadence(int newValue) {
cadence = newValue;
}

void changeGear(int newValue) {
gear = newValue;
}

void speedUp(int increment) {
speed = speed + increment;
}

void applyBrakes(int decrement) {
speed = speed - decrement;
}

void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}

public class BicycleDemo {
public static void main(String[] args) {

// Create two different
// Bicycle objects
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();

// Invoke methods on
// those objects
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();

bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}

另外,可以看出不同于C++,可以看出Java中,类(或函数)的定义没有先后要求。

类继承的语法为

class MontainBike extends Bicycle {
//...
}

类中数据通过方法与外界交互,而方法可以源自接口。通常来说,接口就是一组方法。实现了接口的类必须实现对应方法。

(事实上这段代码无法通过编译;如果要通过编译,需要在每个方法的具体实现前加 public 。)

interface Bicycle {

// wheel revolutions per minute
void changeCadence(int newValue);

void changeGear(int newValue);

void speedUp(int increment);

void applyBrakes(int decrement);
}

class ACMEBicycle implements Bicycle {

int cadence = 0;
int speed = 0;
int gear = 1;

// The compiler will now require that methods
// changeCadence, changeGear, speedUp, and applyBrakes
// all be implemented. Compilation will fail if those
// methods are missing from this class.

void changeCadence(int newValue) {
cadence = newValue;
}

void changeGear(int newValue) {
gear = newValue;
}

void speedUp(int increment) {
speed = speed + increment;
}

void applyBrakes(int decrement) {
speed = speed - decrement;
}

void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}

包的概念不再赘述。可以在 Java Platform API 中找到所有Java SE支持的包、接口、类等等。