Lesson 3 上机练习题——继承

来源:互联网 发布:淘宝上苹果促销代码 编辑:程序博客网 时间:2024/05/21 09:23

题目:

–      在包bzu.aa中定义一个交通工具类(Vehicle):

n  属性——载客量(capacity)

n  方法

u  无参构造方法(给capacity初始化值为2,并输出“执行交通工具类的无参构造方法。”)

u  有参构造方法(传参给capacity初始化,并输出“执行交通工具的有参构造方法。”)

u  capacity的set、get方法

u  print方法:输出capacity

–      在包bzu.aa中定义一个汽车类(Car)继承交通工具类:

n  属性——speed

n  方法

u  无参构造方法(给speed初始化值为0,并输出“执行汽车类的无参构造方法。”)

u  有参构造方法(用super关键字调用父类的有参构造方法,传参给speed初始化,并输出“执行汽车类的有参构造方法。”)

u  加速(speedup):speed+10并返回speed;

u  减速(speeddown):speed-15并返回speed;

u  重写print方法:输出speed和capacity。

–      在包bzu.bb中定义一个final的公交车类(Bus),继承汽车类:

n  属性——载客量(capacity)<变量隐藏>

n  方法

u  无参构造方法(给capacity初始化值为20,并输出“执行公交车类的无参构造方法。”)

u  有参构造方法(用super关键字调用父类的有参构造方法,传参给capacity初始化,并输出“执行公交车类的有参构造方法。”)

u  重写print方法:输出speed、 capacity及父类的capacity。

–      在包bzu.bb中编写一个主类Test:

n  主函数

u  调用无参构造方法创建一个Car的对象car;调用加速方法将速度加至50,调用print方法;调用减速方法,将速度减至20,调用print方法。

u  调用有参构造方法创建一个Bus的对象bus;调用print方法。

代码:

package bzu.aa;//AA包public class Vehicle {publicint capacity;//设为public变量,否则在bb包中子类不能继承。Vehicle()//无参构造{capacity=2;System.out.println("执行交通工具类的无参构造方法。");}Vehicle(int capacity)//有参构造{this.capacity=capacity;System.out.println("执行交通工具类的有参构造方法。");}public void setcapacity(int a)//设定座位{capacity=a;}public int getcapacity()//得到座位{return capacity;}public void println()//输出{System.out.println("capacity :"+capacity);}}

package bzu.aa;public class Car extends Vehicle {//子类publicint speed;publicCar()//若不为public,另外包中的子类不能继承。从而不能构造父类。 { speed=0; System.out.println("执行汽车类的无参构造方法。"); }publicCar(int speed) {super(5); this.speed=speed;  System.out.println("执行汽车类的有参构造方法。"); } public int speedup() { speed=speed+10; return speed; } public int speedDown() { speed=speed-15; return speed; } public void println()//输出{System.out.println("Car capacity :"+capacity);System.out.println("Car speed :"+speed);}}

package bzu.bb;import bzu.aa.*;public final class Bus extends Car{int capacity;//变量隐藏Bus(){capacity=20;System.out.println("执行公交车类的无参构造方法。");}publicBus(int capacity) {super(0); this.capacity=capacity; System.out.println("执行公交车类的有参构造方法。"); }public void println()//输出{System.out.println("Car capacity :"+super.capacity);System.out.println("Bus capacity :"+capacity);System.out.println("speed :"+speed);}}

package bzu.bb;import java.util.*;import bzu.aa.*;public class Test {public static void main(String[] args) {Car car=new Car();//初始化,无参car.speedup();//加速car.speedup();car.speedup();car.speedup();car.speedup();System.out.println("加速后");car.println();//输出car.speedDown();//减速car.speedDown();System.out.println("减速后");car.println();//输出Bus bus =new Bus(30);bus.println();}}


结果:


总结:注意:1、子类与父类不在同一个包中,除了引用父类所在的包中的类外,还需要给父类中的变量与方法添加public或protected,否则子类没有权限访问父类。

2、变量隐藏后,利用super仍可继续调用父类的变量。3、final类不能被继承,没有子类。

原创粉丝点击