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;

public class Vehicle {
int capacity ;
Vehicle(){
capacity=2;
System.out.println("执行交通工具类的无参构造方法");
}
Vehicle(int capacity){
this.capacity=capacity;
System.out.println("执行交通工具类的有参构造方法");
}
public int getCapacity() {
return capacity;
}
public void setCapacity(int capacity) {
this.capacity = capacity;
}
public void print(){
System.out.println(capacity);
}

}

package bzu.aa;

public class Car extends Vehicle {
public int speed;
public Car(){
speed=0;
System.out.println("执行汽车类的无参构造方法");
}

Car(int speed){
speed=super.getCapacity();
System.out.println("执行汽车类的有参构造方法");
}
public int speedup(int speed){
this.speed=speed+10;
return speed;
}
public int speeddow(int speed){
this.speed=speed-15;
return speed;
}
public void print(){
System.out.println("speed="+speed+","+"capacity="+capacity);
}

}

package bzu.aa;

public class Car extends Vehicle {
public int speed;
public Car(){
speed=0;
System.out.println("执行汽车类的无参构造方法");
}

Car(int speed){
speed=super.getCapacity();
System.out.println("执行汽车类的有参构造方法");
}
public int speedup(int speed){
this.speed=speed+10;
return speed;
}
public int speeddow(int speed){
this.speed=speed-15;
return speed;
}
public void print(){
System.out.println("speed="+speed+","+"capacity="+capacity);
}

}

package bzu.bb;

import bzu.aa.Car;

public class Test {

public static void main(String[] args) {
// TODO 自动生成的方法存根

Car car=new Car();
while(car.speed<50){
car.speedup(car.speed);
car.print();
}
while(car.speed>20){
car.speeddow(car.speed);
car.print();
}
Bus bus=new Bus(20);
bus.print();

}

}

时间: 2024-09-30 20:34:42

Lesson 3 上机练习题——继承的相关文章

华为上机练习题--统计各小写字符出现的次数

题目: 手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出.提示可以用map 例子:输入:aaabbbccc 输出:a 3 b 3 c 3 分析: 看到后面的提示,简直就是不用动脑,直接简单粗暴的顺势而上 直接上代码: import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TestCharAcount

华为上机练习题--计算表达式

题目: 输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形. 例如:  输入:3+8×2/9-2 输出:2 函数原型 public int getMyRet(String str) 分析: 这个题目略显高端啊, 像我这种非专业的自学者,还真没有学过编译原理之类的课程, 要自己实现一个这种小型的编译器是非常困难啊, 所幸的是这个题目是用java来实现的, 而我本身也曾经看到过用java来实现这类的问题, 这类问题有一种方法就是实现类编译器功能的函数, 这个我是驾驭不

华为上机练习题--重复字符过滤

题目: 请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉. 比如字符串"abacacde"过滤结果为"abcde". 示例 输入:"deefd"        输出:"def" 输入:"afafafaf"     输出:"af" 输入:"pppppppp"     输出:"p" 分析: 看到这种类似的相同字符过滤,使

华为上机练习题--括号匹配检测

题目: 输入一串字符串,其中有普通的字符与括号组成(包括'('.')'.'[',']'),要求验证括号是否匹配,如果匹配则输出0.否则输出1. Smple input:dfa(sdf)df[dfds(dfd)]    Smple outPut:0 分析: 类似于括号字符匹配这类的问题, 我们可以模拟栈的操作来进行验证, 这样问题就简单了, 就是栈的操作 代码如下: package com.wenj.test; import java.util.ArrayList; import java.uti

华为上机练习题--将英文号码翻译成数字号码

题目: * 将 电话号码 one two ...nine zero 翻译成1  2 ..9 0 * * 中间会有double * * 例如 *     输入:OneTwoThree *     输出:123 *     输入:OneTwoDoubleTwo *     输出:1222 *     输入:1Two2 *     输出:ERROR *     输入:DoubleDoubleTwo *     输出:ERROR 分析:对于字符串的操作有一个比较好用的方法就是replaceAll(),有

华为上机练习题--按身高找出最佳二人组

题目: 要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-190,要求2个人的身高差值最小(如果差值相同的话,选取其中最高的两人),以升序输出两个人的身高. Smple input:161 189 167 172 188 Sample outPut: 188 189 分析:我的理解就是先逆序排好数值, 然后逐对比较身高差值, 找出身高差值最小的然后输出 代码如下: package com.wenj.test; /** * 要从5个人中选取2个人作为礼仪,其中每个人的身高范围为160-

华为上机练习题--求两个数组的总和

题目: 求两个数组的和差:就是去掉两个数组中相同的元素 然后将两个数组中的元素存放在一个新的数组中,且数组A中元素要在B数组元素之前 如:输入: int[] a={1,2,4,7,6,9}; int[] b={2,4,3,10}; 输出: int[] c = {1, 7, 6, 9, 3, 10}; 分析: 剔除相同的元素要互相比较, 然后将不同的元素先后插入新的数组中, 所以我将重点放在比较上, 有可能效率有点低, 大家有什么好的想法可以分享下: 代码如下: package com.wenj.

华为上机练习题--按照新规则排序

题目: * 给定一个数组input[] ,如果数组长度n为奇数, * 则将数组中最大的元素放到 output[] 数组最中间的位置, * 如果数组长度n为偶数, * 则将数组中最大的元素放到 output[] 数组中间两个位置偏右的那个位置上, * 然后再按从大到小的顺序,依次在第一个位置的两边, * 按照一左一右的顺序,依次存放剩下的数. * 例如: *  input[] = {3, 6, 1, 9, 7} *  output[] = {3, 7, 9, 6, 1}; *  input[] =

华为上机练习题--按位取反操作

题目: 求指定位取反后的结果(用异或来进行指定位数的取反) *   输入:0x1234 3 *   输出:0x123c 分析:从网上看到这道题发现蛮有意思的, 记得当时学C语言的时候就有过这种的操作,只不过时间久了就有些健忘, 经过努力追忆后终于想起些些, 现在做出如下总结: *   AND--> & --> AND指令主要用于使操作数若干位不变, 而使某些位为'0'的场合 *   OR --> | --> OR 指令主要用于使操作数若干位不变, 而使某些位为'1'的场合