SCNU-Java作业-主题5:面向对象的基础:面向对象的特性 作业3:提高题-1-类的设计
2021/10/15 22:44:12
本文主要是介绍SCNU-Java作业-主题5:面向对象的基础:面向对象的特性 作业3:提高题-1-类的设计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
某租赁公司 为了满足不同客户的需求,准备了 有以下几种交通工具,
这些交通工具都具有一个共同属性 载客量:personCapacity;
有两个共同的方法 显示载客量 : showCapacity();显示功能:showfunction()
它们能满足不同情况下的交通需求:
轿车 能 跑 (run),
飞机 能 跑(run) 也能飞(fly);
轮船 能 游 (swim)
水上飞机 能 飞(fly) 也能 游(swim)
水陆两用飞机 能 跑(run) 能 飞(fly) 也能游(swim)
请使编写程序,实现交通工具类,方便用户选择该交通工具时,能输出它的载客量和功能。
在测试类中 测试通过
编码码要求体现面向对象的编程思想:封装,继承和多态
学校作业,照着答案来模仿的,再自己慢慢理解
先建一个交通工具的总父类Vehicle
package theme5_3; public abstract class Vehicle { private int personCapacity; public void showCapacity() { System.out.println("载客量:"+this.getPersonCapacity()); } public abstract void say();//用于说出我是什么交通工具 public abstract void showFunction();//展示功能,这种抽象的,每个子类都会有 public Vehicle(int personCapacity) { this.personCapacity = personCapacity; } public int getPersonCapacity() { return personCapacity; } public void setPersonCapacity(int personCapacity) { this.personCapacity = personCapacity; } }
建一个会跑的接口Run,为轿车的借口功能run做准备
package theme5_3; public interface Run { public void run();//放一个空功能的借口,具体再另外实现 }
建轿车Car
package theme5_3; public class Car extends Vehicle implements Run{//实施Run里面的功能 public Car(int personCapacity) { super(personCapacity); // TODO Auto-generated constructor stub } @Override public void showFunction() { // TODO Auto-generated method stub run(); } public void run() { System.out.println("我能在路上跑,日行千里!"); } @Override public void say() { // TODO Auto-generated method stub System.out.println("轿车:"); } }
轿车好了,做飞机,飞机有跑的功能,可以看出是轿车的子类,从轿车中继承下来就好了,再另外加个会飞的功能接口Fly,那这里先做接口Fly先
package theme5_3; public interface Fly { public void fly(); }
然后飞机继承轿车,再加上这个Fly接口
package theme5_3; public class Plane extends Car implements Fly { //飞机能跑,可以直接继承Car类,然后加个Fly的接口,又能飞了 public Plane(int personCapacity) { super(personCapacity); // TODO Auto-generated constructor stub } @Override public void fly() { // TODO Auto-generated method stub System.out.println("我能在天上飞!直插云霄!"); } public void say() { System.out.println("飞机:"); } public void showFunction() { run(); fly(); } }
然后是轮船Ship,这里轮船会swim,那先做Swim的接口
package theme5_3; public interface Swim { public void swim(); }
接着把轮船做好
package theme5_3; public class Ship extends Vehicle implements Swim{ public Ship(int personCapacity) { super(personCapacity); // TODO Auto-generated constructor stub } @Override public void showFunction() { // TODO Auto-generated method stub swim(); } public void say() { System.out.println("轮船:"); } @Override public void swim() { // TODO Auto-generated method stub System.out.println("我能在水上游,浪里白条!"); } }
接着做水上飞机WaterPlane,能飞能游(不能跑),那我就直接继承轮船Ship,再给他加个飞的接口FLy就好了
package theme5_3; public class WaterPlane extends Ship implements Fly { //继承轮船swim的功能 public WaterPlane(int personCapacity) { super(personCapacity); // TODO Auto-generated constructor stub } @Override public void fly() { // TODO Auto-generated method stub System.out.println("我是水上飞机,还能飞!"); } public void showFunction() { fly(); swim(); } public void say() { System.out.println("水上飞机:"); } }
接着做水陆两用飞机,能 跑(run) 能 飞(fly) 也能游(swim),直接从飞机上继承,加个会游的接口Swim就好了(或者继承水上飞机,加个Run接口)
package theme5_3; public class WaterLandPlane extends Plane implements Swim { public WaterLandPlane(int personCapacity) { super(personCapacity); // TODO Auto-generated constructor stub } @Override public void swim() { // TODO Auto-generated method stub System.out.println("水陆两用飞机,我还能游!"); } public void showFunction() { super.showFunction();//这里可以直接继承前者的功能 swim(); } public void say() { System.out.println("水陆两用飞机:"); } }
最后是测试环节了
package theme5_3; public class Test { public static void main(String[] args) { // TODO Auto-generated method stub Vehicle[] v = new Vehicle[5];//新建一个交通工具的数组,有五种交通工具 //在分别定义他们的载客量,种类 v[0] = new Car(5);//小车一般五座的 v[1] = new Plane(300);// v[2] = new Ship(400); v[3] = new WaterPlane(500); v[4] = new WaterLandPlane(1000); System.out.println("35号同学的Java作业,累死我了!照着答案抄都累,还要花很长时间去理解"); for(Vehicle x:v)//x,选择的数字,v车型,即数组名 { x.say();//说出我是什么交通工具 x.showCapacity();//展示载客量 x.showFunction();//展示有什么功能 System.out.println(" "); } } }
做完真的累,不过还有,有点成就感了,虽然说是模仿答案的,从模仿中学习,再理解。
这篇关于SCNU-Java作业-主题5:面向对象的基础:面向对象的特性 作业3:提高题-1-类的设计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-29RocketMQ底层原理资料详解:新手入门教程
- 2024-11-29RocketMQ源码资料解析与入门教程
- 2024-11-29[开源]6.1K star!这款电视直播源神器真的太赞啦!
- 2024-11-29HTTP压缩入门教程:轻松提升网页加载速度
- 2024-11-29JWT开发入门指南
- 2024-11-28知识管理革命:文档软件的新玩法了解一下!
- 2024-11-28低代码应用课程:新手入门全攻略
- 2024-11-28哪些办公软件适合团队协作,且能够清晰记录每个阶段的工作进展?
- 2024-11-28全栈低代码开发课程:零基础入门到初级实战
- 2024-11-28拖动排序课程:轻松掌握课程拖动排序功能