欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Lesson 3 上机练习题——继承

程序员文章站 2022-07-06 11:07:58
...

题目:

–      在包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 {
public	int 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 {//子类
	public	int speed;
public	Car()//若不为public,另外包中的子类不能继承。从而不能构造父类。
 	{
	 speed=0;
	 System.out.println("执行汽车类的无参构造方法。");
 	}
public	Car(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("执行公交车类的无参构造方法。");
		
	}
	public	Bus(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();
	}

}


结果:

Lesson 3 上机练习题——继承

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

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