一、选择


A


D


C


B


C


C


B


ABD


D


D


C


C

二、编程

1.编程练习:某公司要开发“XX车行管理系统”,请使用面向对象的思想,设计自定义类描述自行车、电动车和三轮车。
程序参考运行效果图如下:

任务
任务分析;
第一步:分析自行车、电动车和三轮车的共性:

  • 都是非机动车,具有非机动车的基本特征
  • 都有运行的方法

第二步:根据共性,定义非机动车
属性:品牌、颜色、轮子(默认2个)、座椅(默认 1个)
方法:

  1. 编写无参构造方法、双参构造方法和四参构造方法,其中,在双参构造方法中,完成对品牌和颜色的赋值;在四参构造方法中,完成对所有属性的赋值
  2. 编写运行的方法,描述内容为:这是一辆颜色的,牌的非机动车,有个轮子,有个座椅的非机动车。其中**的数据由属性提供

第三步:定义自行车、电动车和三轮车分别继承非机动车类,要求:

  • 自行车类:

在构造方法中调用父类多参构造,完成属性赋值
重写运行方法,描述内容为:这是一辆**颜色的,牌的自行车。其中的数据由属性提供

  • 电动车:

增加“电池品牌”属性
重写运行方法,描述内容为:这是一辆使用牌电池的电动车。其中的数据由属性提供

  • 三轮车:

在无参构造中实现对轮子属性值进行修改
重写运行方法,描述内容为:三轮车是一款有个轮子的非机动车。其中的数据由属性提供

/*** 非机动车类* @author Administrator**/
public class NMV {//品牌private String brand;//颜色private String color;//轮子,默认2个private int wheel = 2;//座椅,默认1个private int chair = 1;public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public int getWheel() {return wheel;}public void setWheel(int wheel) {this.wheel = wheel;}public int getChair() {return chair;}public void setChair(int chair) {this.chair = chair;}//无参构造public NMV() {}//双参构造public NMV(String brand,String color) {this.setBrand(brand);this.setColor(color);}//四参构造public NMV(String brand,String color,int wheel,int chair) {this(brand,color);this.setWheel(wheel);this.setChair(chair);}//运行方法public String info() {String str;str = "这是一辆" + this.color + "颜色的,";str += this.brand + "牌的非机动车,";str += "有" + this.wheel + "个轮子,";str += "有" + this.chair + "个座椅的非机动车。";return str;}}
/*** 自行车类* @author Administrator**/
public class Bicycle extends NMV {//无参构造public Bicycle() {}//多参构造public Bicycle(String brand,String color) {super(brand,color);}//自行车的重写方法@Overridepublic String info() {String str;str = "这是一辆" + this.getColor() + "颜色的,";str += this.getBrand() + "牌的自行车";return str;}
}
/*** 电动车类* @author Administrator**/
public class EV extends NMV{//电动车的私有属性---电池品牌private String evBrand;public String getEvBrand() {return evBrand;}public void setEvBrand(String evBrand) {this.evBrand = evBrand;}public EV() {}public EV(String evBrand) {this.setEvBrand(evBrand);}@Overridepublic String info() {String str;str = "这是一辆使用" + this.evBrand + "牌电池的电动车";return str;}
}
/*** 三轮车类* @author Administrator**/
public class Tricycle extends NMV{public Tricycle() {this.setWheel(3);}@Overridepublic String info() {String str;str = "三轮车是一款有" + this.getWheel() + "个轮子的非机动车";return str;}
}
/*** 测试类* @author Administrator**/
public class Test {public static void main(String[] args) {NMV nmv = new NMV("天宇","红",4,2);Bicycle bicycle = new Bicycle("捷安特","黄");EV ev = new EV("飞鸽");Tricycle tricycle = new Tricycle();System.out.println(nmv.info());System.out.println(bicycle.info());System.out.println(ev.info());System.out.println(tricycle.info());}
}

2.请使用面向对象的思想,设计自定义类Person继承Object类,重写toString方法实现对象信息输出。
运行效果如下图所示:

思路分析

  • 创建一个 Person 类继承自 Object,其中类的结构要求为: 属性:name(姓名)、age(年龄)、sex(性别)
    方法:
    创建带参(name、age、sex为参数)构造方法;
    重写 toString 方法,输出信息格式为:姓名:** 年龄:** 性别:**(其中,**为对象对应属性值);

  • 创建测试类,在测试方法中,实例化 Person对 象,并传入三个属性值。然后,分别通过直接打印Person对象以及利用重写的
    toString 方法,打印输出2行对象信息。

/*** 创建一个 Person 类继承自 Object* @author Administrator**/
public class Person {//名字private String name;//年龄private int age;//性别private String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Person() {}public Person(String name, int age, String sex) {super();this.setName(name);this.setAge(age);this.setSex(sex);}@Overridepublic String toString() {return "姓名:" + this.name + " " + "年龄:" + this.age + "   " + "性别:" + this.sex;}}
/*** 测试类* @author Administrator*  */
public class Test {public static void main(String[] args) {Person person = new Person("李明",18,"男");System.out.println(person);System.out.println(person.toString());}
}


3.请使用面向对象的思想,实现杨梅和仙人蕉的信息描述。
程序参考运行效果图如下:

思路分析:
1、根据杨梅和香蕉的共性,抽取父类水果(Fruits)
私有属性:水果的形状(shape)和口感(taste)
方法:

  • 带参构造函数(参数为shape和taste)
  • 创建无参无返回值得方法eat(描述内容为:水果可供人们食用!)
  • 重写equals方法,比较两个对象是否相等(比较shape,taste)

2、子类Waxberry
私有属性:颜色(color)
方法:

  • 调用父类的构造方法,完成属性赋值
  • 创建不允许重写的face方法,描述为:杨梅:,果味酸甜适中。
  • 重写父类eat方法,描述为:杨梅酸甜适中,非常好吃!
  • 重写toString方法,输出的表现形式不同(输出shape,color,taste)
  • 要求Waxberry类不允许有子类

3、子类:Banana
私有属性:品种(variety)
方法:

  • 带参构造方法为所有属性赋值
  • 创建无参无返回值的advantage方法,描述为:果形,果肉香甜,可供生食。
  • 重载要求(2)中的advantage方法(带参数color),描述为:颜色为

4、测试,运行效果参照效果图:

  • 实例化2个父类对象,并传入两组相同的参数值
  • 调用父类eat方法
  • 测试重写equals方法,判断两个对象是否相等
  • 实例化子类Wacberry对象,并传入相关参数值
  • 调用子类face方法和重写父类eat方法后的eat方法
  • 测试重写toString方法,输出子类对象的信息
  • 实例化Banana类对象,并传入相关参数值
  • 调用子类的advantage和它的重载方法
/*** 水果类* @author Administrator**/
public class Fruits {//水果的形状private String shape;//口感private String taste;public String getShape() {return shape;}public void setShape(String shape) {this.shape = shape;}public String getTaste() {return taste;}public void setTaste(String taste) {this.taste = taste;}public Fruits() {super();}public Fruits(String shape,String taste) {this.setShape(shape);this.setTaste(taste);}//创建eat方法public void eat() {System.out.println("水果可供人们食用!");}@Overridepublic boolean equals(Object obj) {if(obj == null) {return false;}else {Fruits fruits = (Fruits)obj;if(this.getShape().equals(this.getShape()) && this.getTaste().equals(this.getTaste())) {return true;}else {return false;}}}//此为重载public boolean equals(Fruits fruits) {if(fruits == null) {return false;}else {if(this.getShape().equals(this.getShape()) && this.getTaste().equals(this.getTaste())) {return true;}else {return false;}}}
}
/*** 杨梅类* @author Administrator**/
public final class Waxberry extends Fruits {//颜色private String color;public String getColor() {return color;}public void setColor(String color) {this.color = color;}public Waxberry() {}public Waxberry(String shape,String taste,String color){super(shape,taste);this.setColor(color);}//创建不允许重写的face方法public final void face() {System.out.println("杨梅:" + this.getColor() + "、" + this.getShape() + "," + "果味" + this.getTaste() + "。");}//重写父类eat方法@Overridepublic void eat() {System.out.println("杨梅酸甜适中,非常好吃!");}//重写toString方法@Overridepublic String toString() {return "杨梅的信息:" + "果实为" + this.getShape() + "、" + this.getColor() + "," + this.getTaste() + ",非常好吃!";}
}
/*** 仙人蕉类* @author Administrator**/
public class Banana extends Fruits{//品种private String variety;public String getVariety() {return variety;}public void setVariety(String variety) {this.variety = variety;}public Banana() {}public Banana(String shape,String taste,String variety) {super(shape,taste);this.setVariety(variety);}//创建无参无返回值的advantage方法public void advantage() {System.out.println(this.getVariety() + "果形" + this.getShape() + ",果肉" + this.getTaste() + ",可供生食。");}//重载advantage方法(带参数color)public void advantage(String color) {System.out.println(this.getVariety() + "颜色为" + color);}
}
/*** 测试类* @author Administrator**/
public class Test {public static void main(String[] args) {Fruits fru1 = new Fruits("圆形","甜");Fruits fru2 = new Fruits("圆形","甜");fru1.eat();System.out.println("fru1和fru2的引用比较:" + fru1.equals(fru2));System.out.println("-------------------------------------------");Waxberry wb = new Waxberry("圆形","酸甜适中","紫红色");wb.face();wb.eat();System.out.println(wb.toString());System.out.println("-------------------------------------------");Banana ba = new Banana("短而稍圆","香甜","仙人蕉");ba.advantage();ba.advantage("黄色");}
}

Java继承相关练习相关推荐

  1. 「万字图文」史上最姨母级Java继承详解

    原创公众号:「bigsai」 除公众号以外拒绝任意擅自转载 文章收录在bigsai公众号和回车课堂 课程导学 在Java课堂中,所有老师不得不提到面向对象(Object Oriented),而在谈到面 ...

  2. java 继承 冒号_java继承(extends)简单介绍

    继承相信很多人都有听说过,继承是面向对象的三个基本特征之一,下面的话就一起通过简单的文章来对java继承进行一下了解吧. 继承和现实生活中的"继承"的相似之处是保留一些父辈的特性, ...

  3. java继承对象转换_java 继承的基础(转)

    java 继承的基础(转)[@more@]继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类.运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性.该类可以被更具体的类继承,每 ...

  4. Java:继承之super关键字,继承之私有权限,继承之方法重写,继承之object类,继承之简单工厂模式

    一.继承的概念及用法       继承背后的思想就是        基于已存在的类来构建新类         当从已存在类继承时,就重用了它的方法和属性,还可以添加新的方法和属性来定制新类以应对需求 ...

  5. 通过java理解linux,Java继承的理解

    继承: 1)概念 把多个类中相同的成员给提取出来定义到一个独立的类中.然后让这多个类和该独立的类产生一个关系,这多个类就具备了这些内容.这个关系叫继承. 1.1)定义类时,通过"继承&quo ...

  6. 23种经典设计模式都有哪些,如何分类?Java设计模式相关面试

    23种经典设计模式都有哪些,如何分类? 23种经典设计模式都有哪些,如何分类? java常用的设计模式?说明工厂模式 Java 中的23 种设计模式: Factory(工厂模式), Builder(建 ...

  7. java 关注公众号没有调接口_深入理解Java继承、封装、多态的实现原理

    点击关注上方"Java技术江湖",设为"置顶或星标",第一时间送达技术干货. 作者:黄小斜 文章来源:微信公众号[Java技术江湖] 目录 从JVM结构开始谈多 ...

  8. Java多线程相关的几十个问题

    转载来源:http://www.cnblogs.com/HadesFX/p/5333810.html , https://www.cnblogs.com/HadesFX/p/5333820.html ...

  9. Java Se相关测试题(偏线程、集合)含答案及详解

    Java Se相关测试题(偏线程.集合)(简答.编程)含答案及详解 一.选择.简答题 二.编程题 (编程答案有很多思路,实现方式不同,如果有不同见解可打在评论区或私信) 一.选择.简答题 1.publ ...

最新文章

  1. 【AI白身境】深度学习中的数据可视化​​​​​​​
  2. 毕业论文摘要的书写方法和技巧
  3. ROS机器人程序设计(原书第2版)1.4.7 在BeagleBone Black中安装rosinstall
  4. mysql 运维 最佳实践_Mysql 开发最佳实践
  5. java中的动态代理----自己手动实现
  6. 钱与命的八句真实话(图)
  7. 南加大计算机科学博士,美国南加州大学计算机科学博士专业介绍
  8. 方案:计算机软件单元测试(GB/T 15532-1995)
  9. Java实现一个简单的两人五子棋游戏(二) 画棋盘
  10. Spring Boot 应用在 kubernetes 的 sidecar 设计与实战
  11. 微信小程序tabBar边框加|上阴影
  12. 【前沿技术了解】-- 云原生技术与架构
  13. java怎么编写木马_Java也能写木马~(附源码!)
  14. JavaScript swiper
  15. Soul 网关(一)---- 架构设计简介、soul-admin、soul-bootstrap
  16. keil 对于 ERROR: FILE DOES NOT EXIST错误的解决办法
  17. Intel 正式宣布8代酷睿处理器:14nm、性能提升15%
  18. SAP前台操作时,如何客制化表格的宽度和位置
  19. Google XTS TV认证测试经验总结
  20. 使用 BigDecimal 进行浮点数运算

热门文章

  1. Netty原理(一)BIO,NIO,AIO
  2. Python None 值
  3. 学习编程语言必须掌握哪些计算机基础知识?
  4. c语言for'循环执行顺序
  5. 偏度与峰度的标准误Z-score
  6. mysql 除去周末_MySQL TimeDiff排除周末
  7. HTML基础——header, nav, footer, article, section, aside
  8. Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
  9. python实现线性回归之最小二乘法,最小二乘法详解
  10. 敢想才有机会,敢干才会成功