Lesson 3 上机练习题——继承

题目:

–      在包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();
	}

}


结果:


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

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

猜你喜欢

转载自blog.csdn.net/wfcy023315/article/details/78216752