案例介绍:
请设计一个汽车类Auto,其中包含一个表示速度的double刑的成员恋量speed,表示启动的start()方法、表示加速的speedUp()方法以及表示停止的 stop()方法。再设计一个Auto类的子类Bus表示公共汽车,在Bus类中定义一个int型的表示乘客数的成员变量passenger,另外定义两个方法 gotOn()和 gotOff()表示乘客上车和下车。编写程序测试Bus类的使用。
关于这类案例,有两种方法:
(1)只保留TestBus类的public,去掉Auto类、Bus类的public。
(2)多类运行。将该程序分成三类:Auto类、Bus类和TestBus类,最后在TestBus类运行即可。
方法一的案例代码:
public class TestBus{
public static void main(String [] args){
Bus bus = new Bus();
bus.start();
bus.speedUp(60);
bus.stop();
bus. gotOn(10);
bus. gotOff(5);
}
}
class Auto {
private double speed;
public void start(){
System.out.println("The auto is started.");
}
public void speedUp(double speed){
this.speed = speed;
System.out. println("The auto is speed up to " + speed + "kilo/h." );
}
public void stop(){
this.speed = 0;
System.out.println("The auto is stoped.");
}
}
class Bus extends Auto{
private int passenger;
public void gotOn(int n){
passenger = passenger + n;
System.out.println("The person on bus is : " + passenger) ;
}
public void gotOff(int n){
passenger =passenger - n;
System. out. println("The person on bus is: " + passenger);
}
}
方法一的案例运行图:
方法二的案例代码:
(1)Auto类
public class Auto {
private double speed;
public void start(){
System.out.println("The auto is started.");
}
public void speedUp(double speed){
this.speed = speed;
System.out. println("The auto is speed up to " + speed + " kilo/h." );
}
public void stop(){
this.speed = 0;
System.out.println("The auto is stoped.");
}
}
(2)Bus类
public class Bus extends Auto{
private int passenger;
public void gotOn(int n){
passenger = passenger + n;
System.out.println("The person on bus is :" + passenger) ;
}
public void gotOff(int n){
passenger =passenger - n;
System. out. println("The person on bus is :" + passenger);
}
}
(3)TestBus类
public class TestBus{
public static void main(String [] args){
Bus bus = new Bus();
bus.start();
bus.speedUp(60);
bus.stop();
bus. gotOn(10);
bus. gotOff(5);
}
}
注意:一定要在TestBus类运行才行。
方法二的案例运行图:
小结:
为什么方法一中只保留TestBus类的public,去掉Auto类、Bus类的public才能运行成功呢?
因为在Java语言中在一个Java源文件中不能同时出现“public”类,因为Java源文件最多只能包含一个public类定义。我们知道,有public的类表示全局类(全局类可以被import到其他类里面),而无public的类表示保留类(该类只能被本包里的其他类引用)。所以,要想在多个public class类共存,有两种方法:
①在{}的外部去掉public,只保留class类
②不去掉public,但要把public class类放在{}里面,将它作为一个内部类。
我们可以通过以下代码更好地理解: