Java练习题3

来源:互联网 发布:手持gps数据采集器 编辑:程序博客网 时间:2024/06/07 07:41

Lesson 3 上机练习题——继承

课堂练习:
– 在包bzu.aa中定义一个交通工具类(Vehicle):
 属性——载客量(capacity)
 方法
 无参构造方法(给capacity初始化值为2,并输出“执行交通工具类的无参构造方法。”)
 有参构造方法(传参给capacity初始化,并输出“执行交通工具的有参构造方法。”)
 capacity的set、get方法
 print方法:输出capacity
– 在包bzu.aa中定义一个汽车类(Car)继承交通工具类:
 属性——speed
 方法
 无参构造方法(给speed初始化值为0,并输出“执行汽车类的无参构造方法。”)
 有参构造方法(用super关键字调用父类的有参构造方法,传参给speed初始化,并输出“执行汽车类的有参构造方法。”)
 加速(speedup):speed+10并返回speed;
 减速(speeddown):speed-15并返回speed;
 重写print方法:输出speed和capacity。
– 在包bzu.bb中定义一个final的公交车类(Bus),继承汽车类:
 属性——载客量(capacity)<变量隐藏>
 方法
 无参构造方法(给capacity初始化值为20,并输出“执行公交车类的无参构造方法。”)
 有参构造方法(用super关键字调用父类的有参构造方法,传参给capacity初始化,并输出“执行公交车类的有参构造方法。”)
 重写print方法:输出speed、 capacity及父类的capacity。
– 在包bzu.bb中编写一个主类Test:
 主函数
 调用无参构造方法创建一个Car的对象car;调用加速方法将速度加至50,调用print方法;调用减速方法,将速度减至20,调用print方法。
 调用有参构造方法创建一个Bus的对象bus;调用print方法。

##

package bzu.aa;public class Vehicle {    protected int capacity;    public Vehicle(){        capacity=2;        System.out.println("执行交通工具类的无参构造方法。");    }    public Vehicle(int capacity){        this.capacity=capacity;        System.out.println("执行交通工具的有参构造方法。");    }    protected void setCapacity(int capacity){        this.capacity=capacity;    }    protected int getCapacity(){        return capacity;    }    protected void printf(){        System.out.println("交通工具的载客量为: "+capacity);    }}
package bzu.aa;public class Car extends Vehicle{    protected int speed;    public Car(){        super();        speed=0;        System.out.println("执行汽车类的无参构造方法。");    }    public Car(int speed){        super(200);        this.speed=speed;        System.out.println("执行汽车类的有参构造方法。");    }    public void speedup(int n){        speed=speed+10*n;    }    public void speeddown(int n){        speed=speed-15*n;    }    public void print(){        System.out.println("汽车的载客量为: "+capacity+"汽车的速度为:"+speed);    }}
package bzu.bb;import bzu.aa.Car;public final class Bus extends Car{    public  int capacity;    public  Bus(){         super();         capacity=20;         System.out.println("执行公交车类的无参构造方法。");     }     public Bus(int capacity){         super(50);         this.capacity=capacity;         System.out.println("执行公交车类的有参构造方法。");     }     public void print(){         System.out.println("公交车的速度为:"+speed+"公交车的载客量为:"+                            capacity+"交通工具的载客量为:"+getCapacity());     }}
package bzu.bb;import bzu.aa.Car;public class Test {    public static void main(String[] args) {        Car car=new Car();        car.speedup(50);        car.print();        car.speeddown(20);        car.print();        Bus bus=new Bus(30);        bus.print();    }}

这里写图片描述
总结:注意区分Bus类和主类在一个包中,Vehicle和Car类在另一个包中,Car和Bus类都继承Vehicle类,注意包的导入和权限修饰符的问题。另外,学会用super类,首先明白super明显显示地指出子类可以直接访问它父类的构造函数,方法和变量。例如,当调用一个实例方法时,如果实例本身并没有定义该方法,那我们会自然的得到他父类中定义的同名的方法。尽管会因为方法的覆盖或者使用定义与父类一样的实例或类变量(隐藏)而失去访问的权限。构造函数不能继承,因此super是访问父类中构造函数的唯一途径。

原创粉丝点击