5.14上机
1、(1)定义一个汽车类Vehicle,要求如下:(知识点:类的继承 方法的覆盖)
(a)属性包括:汽车品牌brand(String类型)、颜色color(String类型)和速度speed(double类型)。
(b)至少提供一个有参的构造方法(要求品牌和颜色可以初始化为任意值,但速度的初始值必须为0)。
(c)为属性提供访问器方法。注意:汽车品牌一旦初始化之后不能修改。
(d)定义一个一般方法run(),用打印语句描述汽车奔跑的功能
定义测试类VehicleTest,在其main方法中创建一个品牌为“benz”、颜色为“black”的汽车。
(2)定义一个Vehicle类的子类轿车类Car,要求如下:
(a)轿车有自己的属性载人数loader(int 类型)。
(b)提供该类初始化属性的构造方法。
(c)重新定义run(),用打印语句描述轿车奔跑的功能。
(d)定义测试类Test,在其main方法中创建一个品牌为“Honda”、颜色为“red”,载人数为2人的轿车。
1 //父类 2 3 package pro1; 4 5 public class Vehicle { 6 private String brand; 7 private String color; 8 private double speed=0; 9 10 public Vehicle() { 11 12 } 13 14 public Vehicle(String brand, String color, double speed) { 15 16 this.brand = brand; 17 this.color = color; 18 this.speed = speed; 19 } 20 21 public String getBrand() { 22 return brand; 23 } 24 25 public String getColor() { 26 return color; 27 } 28 29 public void setColor(String color) { 30 this.color = color; 31 } 32 33 public double getSpeed() { 34 return speed; 35 } 36 37 public void setSpeed(double speed) { 38 this.speed = speed; 39 } 40 public void run(){ 41 System.out.println("一辆"+color+"色的"+brand+"牌汽车以"+speed+"的速度奔驰"); 42 } 43 44 @Override 45 public String toString() { 46 return "Vehicle [brand=" + brand + ", color=" + color + ", speed=" + speed + "]"; 47 } 48 49 50 51 52 }
1 //子类 2 3 package pro2; 4 5 public class Car extends Vehicle{ 6 int loader; 7 8 public Car(String brand, String color, double spend, int loader) { 9 super(brand, color, spend); 10 this.loader = loader; 11 } 12 13 public int getLoader() { 14 return loader; 15 } 16 17 public void setLoader(int loader) { 18 this.loader = loader; 19 } 20 public void run(){ 21 System.out.println("这辆车可"+loader+"人"); 22 } 23 24 }
2、设计四个类,分别是:(知识点:抽象类及抽象方法)
(1)Shape表示图形类,有面积属性area、周长属性per,颜色属性color,有两个构造方法(一个是默认的、一个是为颜色赋值的),还有3个抽象方法,分别是:getArea计算面积、getPer计算周长、showAll输出所有信息,还有一个求颜色的方法getColor。
(2)2个子类:
1)Rectangle表示矩形类,增加两个属性,Width表示长度、height表示宽度,重写getPer、getArea和showAll三个方法,另外又增加一个构造方法(一个是默认的、一个是为高度、宽度、颜色赋值的)。
2)Circle表示圆类,增加1个属性,radius表示半径,重写getPer、getArea和showAll三个方法,另外又增加两个构造方法(为半径、颜色赋值的)。
(3)一个测试类PolyDemo,在main方法中,声明创建每个子类的对象,并调用2个子类的showAll方法。
1 public class pro1 { 2 public static void main(String[] args) { 3 Rectangle r=new Rectangle("蓝",6,6); 4 Circle c=new Circle("蓝",7); 5 r.getAll(); 6 c.getAll(); 7 } 8 } 9 //父类(形状类) 10 public abstract class Shape { 11 double area; 12 double per; 13 String color; 14 15 public Shape() { 16 } 17 18 public Shape(String color) { 19 this.color = color; 20 } 21 22 public Shape(int area, int per, String color) { 23 this.area = area; 24 this.per = per; 25 this.color = color; 26 } 27 public abstract double getArea(); 28 public abstract double getPer(); 29 public abstract void getAll(); 30 31 public String getColor() { 32 return color; 33 } 34 } 35 //子类(矩形类) 36 public class Rectangle extends Shape{ 37 int width; 38 int height; 39 40 public Rectangle(String color, int width, int height) { 41 super(color); 42 this.width = width; 43 this.height = height; 44 } 45 46 @Override 47 public double getArea() { 48 area=width*height; 49 return area; 50 } 51 52 @Override 53 public double getPer() { 54 per=(width+height)*2; 55 return per; 56 } 57 58 @Override 59 public void getAll() { 60 System.out.println("宽为"+width+"高为"+height+"面积为"+getArea()+"周长为"+getPer()); 61 62 } 63 } 64 65 子类(圆形类) 66 public class Circle extends Shape { 67 int radius; 68 69 public Circle(String color, int radius) { 70 super(color); 71 this.radius = radius; 72 } 73 74 @Override 75 public double getArea() { 76 area=3.14*(radius*radius); 77 return area; 78 } 79 80 @Override 81 public double getPer() { 82 per=2*3.14*radius; 83 return per; 84 } 85 86 @Override 87 public void getAll() { 88 System.out.println("半径为"+radius+"面积为"+getArea()+"周长为"+getPer()); 89 } 90 }