Add files via upload

上传练习题
This commit is contained in:
OrangeCat 2021-07-17 17:56:48 +08:00 committed by GitHub
parent 0808d68011
commit 98913a9913
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 525 additions and 0 deletions

View File

@ -0,0 +1,30 @@
## 实例: 根据身高、体重计算BMI值
创建 BMIexponent 类声明double 型变量height 记录身高,单位为米,声明 int 型变量 weight 记录体重,单位为千克,根据 BMI= 体重/(身高× 身高)的公式计算 BMI指数实例代码如下
```java
public class BMIexponent {
public static void main(String[] args) {
double height = 1.82; // 身高变量,单位:米
int weight = 65; // 体重变量,单位:千克
double exponent = weight / (height * height); // BMI计算公式
System.out.println("您的身高为:" + height);
System.out.println("您的体重为:" + weight);
System.out.println("您的BMI指数为" + exponent);
System.out.print("您的体重属于:");
if (exponent < 18.5) { // 判断BMI指数是否小于18.5
System.out.println("体重过轻");
}
if (exponent >= 18.5 && exponent < 24.9) { // 判断BMI指数是否在18.5到24.9之间
System.out.println("正常范围");
}
if (exponent >= 24.9 && exponent < 29.9) { // 判断BMI指数是否在24.9到29.9之间
System.out.println("体重过重");
}
if (exponent >= 29.9) { // 判断BMI指数是否大于29.9之间
System.out.println("肥胖");
}
}
}
```
#### 练习1试着实现将37摄氏度转换为整型的华氏度。提示 华氏度 =32+摄氏度 ×1.8
#### 练习2一个圆柱形粮仓底面值径为 10米高为 3米该粮仓体积为多少立方米?如果每立方米屯粮 750 千克,该粮仓一共可储存多少千克粮食?

View File

@ -0,0 +1,155 @@
**思考:** 构造方法能作为抽象方法吗?
## 实例1使用抽象类模拟"去商场买衣服"场景
"去商场买衣服",这句话描述的是一个抽象的行为∶到底去哪个商场买衣服,是实体店还是网店,买什么样的衣服,是短衫、裙子,还是其他的什么衣服?在"去商场买衣服"这句话中,并没有为"买衣服"这个抽象行为指明一个确定的信息。设计一个商场的抽象类,并在其中定义买东西的抽象方法,具体是什么商场、买什么东西,交给子类去实现即可。代码如下∶
```java
public abstract class Market {
public String name; // 商场名称
public String goods; // 商品名称
public abstract void shop(); // 抽象方法,用来输出信息
}
```
定义一个TaobaoMarket类继承自 Market 抽象类实现其中的shop()抽象方法:
```java
public class TaobaoMarket extends Market {
public void shop() {
System.out.println(name + "网购" + goods);
}
}
```
定义一个 WallMarket 类继承自Market 抽象类实现其中的shop()抽象方法:
```java
public class WallMarket extends Market {
public void shop() {
System.out.println(name + "实体店购买" + goods);
}
}
```
定义一个 GoShopping类在该类中分别使用WallMarket类和TaobaoMarket类创建抽象类的对象并分别给抽象类中的成员变量赋不同的值调用 shop()方法分别输出结果:
```java
public class GoShopping {
public static void main(String[] args) {
Market market = new WallMarket(); // 使用派生类对象创建抽象类对象
market.name = "沃尔玛";
market.goods = "七匹狼西服";
market.shop();
market = new TaobaoMarket(); // 使用派生类对象创建抽象类对象
market.name = "淘宝";
market.goods = "韩都衣舍花裙";
market.shop();
}
}
```
#### 练习1
创建 Shape图形该类中有一个计算面积的方法。圆形和矩形都继承自图形类输出圆形和矩形的面积。
#### 练习2
创建工厂类,工厂类中有一个抽象的生产方法,创建汽车厂和鞋厂类,重写工厂类中的抽象生产方法,输出汽车厂生产的是汽车,鞋厂生产的是鞋。
**使用抽象类和抽象方法时,需要遵循以下原则**
- 在抽象类中,可以包含抽象方法,也可以不包含抽象方法,但是包含了抽象方法的类必须被定义为抽象类。
- 抽象类不能直接被实例化,即使抽象类中没有声明抽象方法,也不能被实例化。
- 抽象类被继承后,子类需要重写抽象类中所有的抽象方法。
- 如果继承抽象类的子类也被声明为抽象类,则可以不用重写父类中所有的抽象方法。使用抽象类时,可能会出现这样的问题;程序中会有太多冗余的代码,同时父类的局限性很大。例如,上面的例子中,也许某个不需要 shop()方法的子类也必须重写 shop()方法。如果将这个 shop()方法从父类中拿出,放在别的类里,又会出现新间题∶某些类想要实现"买衣服"的场景意然需要继承两个父类。Java中规定一个类不能同时继承多个父类为解决这种问题接口应运而生。
## 实例2通过实现接口 绘制出特殊的平行四边形
特殊的平行四边形有矩形、正方形和菱形。现使用接口的相关知识绘制出特殊的平行四边形。
```java
interface DrawImage { // 定义“画图形”接口
public void draw(); // 定义抽象方法“画”
}
class Rectangle implements DrawImage { // 矩形类实现了drawTest接口
public void draw() { // 矩形类中实现draw()方法
System.out.println("画矩形");
}
}
class Square implements DrawImage { // 正方形类实现了drawTest接口
public void draw() { // 正方形类中实现draw()方法
System.out.println("画正方形");
}
}
class Diamond implements DrawImage { // 菱形类实现了drawTest接口
public void draw() { // 菱形类中实现draw()方法
System.out.println("画菱形");
}
}
public class SpecialParallelogram { // 定义特殊的平行四边形类
public static void main(String[] args) {
// 接口也可以进行向上转型操作
DrawImage[] images = { new Rectangle(), new Square(), new Diamond() };
// 遍历“画图形”接口类型的数组
for (int i = 0; i < images.length; i++) {
images[i].draw(); // 调用draw()方法
}
}
}
```
**提醒:** 由于接口中的方法都是抽象方法,所以当子类实现接口时,必须实现接口中的所有抽象方法。
## 实例3 使用继承输出儿子喜欢做的事
爸爸喜欢做的事有抽烟和钓鱼妈妈喜欢做的事有看电视和做饭儿子完全继承了爸爸妈妈的爱好使用多重继承输出儿子喜欢做的事。首先定义一个DadLikeDo接口并在接口中定义两个方法 smoke()和 fish():
```java
public interface DadLikeDo { // 定义“爸爸喜欢做的事”接口
void smoke(); // 抽烟的方法
void fish(); // 钓鱼的方法
}
public interface MomLikeDo { // 定义“妈妈喜欢做的事”接口
void watchTV(); // 看电视的方法
void cook(); // 做饭的方法
}
// 继承DadLikeDo接口和MomLikeDo接口
public class SonLikeDo implements DadLikeDo, MomLikeDo {
public void watchTV() { // 实现watchTV()方法
System.out.println("看电视");
}
public void cook() { // 实现cook()方法
System.out.println("做饭");
}
public void smoke() { // 实现smoke()方法
System.out.println("抽烟");
}
public void fish() { // 实现fish()方法
System.out.println("钓鱼");
}
public static void main(String[] args) {
SonLikeDo son = new SonLikeDo(); // 通过子类创建IFather接口对象
System.out.println("儿子喜欢做的事有:");
// 子类对象调用DadLikeDo和MomLikeDo两个接口被实现的所有方法
son.watchTV();
son.cook();
son.smoke();
son.fish();
}
}
```
**思考:**
如何区分抽象类和接口?有哪些不同?

View File

@ -0,0 +1,129 @@
## 实例1使用 if…else if 语句实现饭店座位分配
创建 Restaurant类声明整型变量count表示用餐人数根据人数安排客人到4人桌、8人桌或包厢用餐实例代码如下
```java
import java.util.Scanner; //引入Scanner类
public class Restaurant {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in); // 创建扫描器,获取控制台输入的值
System.out.println("欢迎光临,请问有多少人用餐?"); // 输出问题提示
int count = sc.nextInt(); // 记录用户输入的用餐人数
if (count <= 4) { // 如果人数小于4人
System.out.println("客人请到大厅4人桌用餐"); // 请到4人桌
} else if (count > 4 && count <= 8) { // 如果人数在4-8人之间
System.out.println("客人请到大厅8人桌用餐"); // 请到4人桌
} else if (count > 8 && count <= 16) { // 如果人数在8-16人之间
System.out.println("客人请到楼上包厢用餐"); // 请到包厢
} else { // 当以上条件都不成立时,执行的该语句块
System.out.println("抱歉,我们店暂时没有这么大的包厢!"); // 输出信息
}
sc.close(); // 关闭扫描器
}
}
```
#### 练习1将一、二年级学生的学生成绩划分等级等级划分标准如下①"优秀",大于等于 90分;②"良好",大于等于 80 分,小于 90分;③"合格",大于等于 60分小于80分;④"不合格",小于 60 分。使用 if…else if语句实现根据控制台输入的成绩输出与该成绩对应等级的功能。
#### 练习2BMI 身体质量指数的等级划分标准如下∶①"偏轻"BMI 小于18.5;②"正常"BMI大于等于 18.5小于25;③"偏重"BMI 大于等于25小于30;④"肥胖"BMI大于等于30。根据控制台输入的身高 单位∶ 来)、体重(单位∶ 千克),输出 BMI指数以及与该指数对应的等级。
## 实例2 用 switch 多分支语句判断成绩等级
创建 Grade类使用 Scanner 类在控制台输入成绩,然后用 switch 多分支语句判断输入的分数属于哪个等级。10分和9分属于优8分属于良7分和6分属于中5分、4分、3分、2分、1分以及 0 分均为差,实例代码如下∶
```java
import java.util.Scanner; //引入Scanner类
public class Grade {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // 创建扫描器,接收控制台输入内容
System.out.print("请输入成绩:"); // 输出字符串
int grade = sc.nextInt(); // 获取控制台输入的数字
switch (grade) { // 使用switch判断数字
case 10: // 如果等于10则继续执行下一行代码
case 9: // 如果等于9
System.out.println("成绩为优"); // 输出成绩为优
break; // 结束判断
case 8: // 如果等于8
System.out.println("成绩为良"); // 输出成绩为良
break; // 结束判断
case 7: // 如果等于7则继续执行下一行代码
case 6: // 如果等于6
System.out.println("成绩为中"); // 输出成绩为中
break; // 结束判断
case 5: // 如果等于5则继续执行下一行代码
case 4: // 如果等于4则继续执行下一行代码
case 3: // 如果等于3则继续执行下一行代码
case 2: // 如果等于5则继续执行下一行代码
case 1: // 如果等于1则继续执行下一行代码
case 0: // 如果等于0
System.out.println("成绩为差"); // 输出成绩为差
break; // 结束判断
default: // 如果不符合以上任何一个结果
System.out.println("成绩无效"); // 输出成绩无效
}
sc.close(); // 关闭扫描器
}
}
```
#### 练习3使用 switch多分支语句判断控制台输入的某个月份属于哪个季节。
#### 练习4使用 switch多分支语句判断控制台输入的某个月份属于哪个季节。光盘\Code\Try\O3\052某大型商超为答谢新老顾客当累计消费金额达到一定数额时顾客可享受不同的折扣①尚未超过 200 元,顾客须按照小票价格支付全款;不少于 200元但尚未超过 600元顾客全部的消费金额可享 8.5 折优惠;③不少于 600 元但尚未超过 1000 元,顾客全部的消费金额可享 7折优惠;④不少于 1000 元,顾客全部的消费金额可享 6折优惠;
根据顾客购物小票上的消费金额,在控制台上输出该顾客将享受的折扣与打折后需支付的金额。
## 实例3使用 for 循环完成 1 100的相加运算
创建 AdditiveFor类使用for循环完成1100的相加运算实例代码如下
```java
public class AdditiveFor {
public static void main(String[] args) {
int sum = 0; // 创建用户求和的变量
int i; // 创建用于循环判断的变量
for (i = 1; i <= 100; i++) { // for循环语句
sum += i; // 循环体内执行的代码
}
System.out.println("the result :" + sum); // 在循环外输出最后相加的结果
}
}
```
$思考可不可以改写用while实现相加运算呢$
#### 练习5有一组数 1、1、2、3、5、8、13、21、34…请用for循环算出这组数的第n个数是多少?
#### 练习6一个球从80米高度自由落下每次落地后反弹的高度为原高度的一半第6次落地时共经过多少米?第6次反弹多高
## 实例4使用嵌套的 for 循环输出乘法口诀表
创建 Multiplication类使用两层 for循环实现在控制台输出乘法口诀表实例代码如下
```java
public class Multiplication {
public static void main(String[] args) {
int i, j; // i代表行j代表列
for (i = 1; i < 10; i++) { // 输出9行
for (j = 1; j < i + 1; j++) { // 输出与行数相等的列
System.out.print(j + "*" + i + "=" + i * j + "\t"); // 打印拼接的字符串
}
System.out.println(); // 换行
}
}
}
```
#### 练习75文钱可以买一只公鸡3 文钱可以买一只母鸡1文钱可以买三只雏鸡现在用 100文钱买 100 只鸡,那么公鸡、母鸡、雏鸡各有多少只?
#### 练习8根据用户控制输入 * 的行数,在控制台中输出相应行数的等腰三角形。
## 实例5找出1 19 之间所有的偶数
使用一个for循环输出119之间所有的值如果输出的值是奇数则使用 continue 语句跳过本次循环,实例代码如下∶
```java
public class ContinueTest {
public static void main(String[] args) {
for (int i = 1; i < 20; i++) { // i的值从1循环至19
if (i % 2 != 0) { // 如果i不是偶数
continue; // 跳到下一循环
}
System.out.println(i); // 输出i的值
}
}
}
```
#### 练习找出1-1000数字种的素数和水花仙数。

View File

@ -0,0 +1,39 @@
## 实例1演示隐式转换时自动提升精度的效果
创建ImplicitConyersion类让低精度的变量与高精度变量同时做计算查看计算结果属于哪种精度实例代码如下
```java
public class ImplicitConversion {
public static void main(String[] args) {
// 声明byte型变量mybyte并把byte型变量允许的最大值赋给mybyte
byte mybyte = 127;
int myint = 150; // 声明int型变量myint并赋值150
float myfloat = 452.12f; // 声明float型变量myfloat并赋值
char mychar = 10; // 声明char型变量mychar并赋值
double mydouble = 45.46546; // 声明double型变量并赋值
/* 将运算结果输出 */
System.out.println("byte型与float型数据进行运算结果为" + (mybyte + myfloat));
System.out.println("byte型与int型数据进行运算结果为" + mybyte * myint);
System.out.println("byte型与char型数据进行运算结果为" + mybyte / mychar);
System.out.println("double型与char型数据进行运算结果为" + (mydouble + mychar));
}
}
```
## 实例2利用显式转换演示精度丢失
创建 ExplicitConversion类使用显式转换将不同类型的变量转换成精度更低的类型输出转换之后发生精度丢失的结果实例代码如下
```java
public class ExplicitConversion {
public static void main(String[] args) {
int a = (int) 45.23; // double类型强制转化成int类型
long b = (long) 456.6F; // flaot类型强制转化成long类型
char c = (char) 97.14; // double型强制转换成char型
System.out.println("45.23强制转换成int的结果" + a);
System.out.println("456.6F强制转换成long的结果" + b);
System.out.println("97.14强制转换成char的结果" + c);
}
}
```
#### 练习1使用 char型声明'a''g',然后输出它们相加后的结果。
#### 练习2IP地址每段数字的最大值可以由byte型的最大值与 short型128相加后得到使用隐式转换控制台输出 IP 地址每段数字的最大值。
#### 练习3将 6571显式转换为 char 型并输出。
#### 练习4一辆货车运输箱子载货区宽2米长 4米一个箱子宽 1.5 米,长 1.5米,请问载货区一层可以放多少个箱子?

View File

@ -0,0 +1,4 @@
#### 练习1遍历二维数组int a[][] = {{23.654368}{45998680}{76813445}{88644825}}后,再通过循环计算该二维数组的两条对角线之和。
#### 练习2一个3×3的网格将从1到9的数字放入方格达到能够使得每行每列以及每个对角线的值相加都相同。
#### 练习3交换二维数组 int array[][] = {{87523}{21534}{152320 }};的行、列数据。
#### 练习4使用二维数组实现杨辉三角算法。

View File

@ -0,0 +1,44 @@
扩展知识
- 不定长参数:
声明方法时,如果有若平个相同类型的参数,可以定义为不定长参数,该类型的参数声明如下∶
```
权限修饰符 返回值类型 方法名(参数类型... 参数名)
```
**注意∶** 参数类型和参数名之间是三个点,而不是其他数量或省略号。
## 实例1使用 this 关键字实现给饼只加一个蛋
顾客买鸡蛋灌饼要求加几个蛋,烙饼大妈就给饼加几个蛋,不要求的时候就只加一个蛋。创建鸡蛋灌饼 EggCake 类,创建有参数和无参数构造方法,无参构造方法调用有参数构造方法并实现初始化。
```java
public class EggCake { // 创建鸡蛋灌饼EggCake类
int eggCount; // 鸡蛋灌饼里蛋的个数(属性)
// 有参数构造方法,参数是给饼加蛋的个数
public EggCake(int eggCount) { // 参数为鸡蛋灌饼里蛋的个数的构造方法
this.eggCount = eggCount; // 将参数eggCount的值付给属性eggCount
System.out.println("这个鸡蛋灌饼里有" + eggCount + "个蛋。");
}
// 无参数构造方法,默认给饼加一个蛋
public EggCake() { // 默认构造方法
// 调用参数为鸡蛋灌饼里蛋的个数的构造方法并设置鸡蛋灌饼里蛋的个数为1
this(1);
}
public static void main(String[] args) {
EggCake cake1 = new EggCake(); // 创建无参的鸡蛋灌饼对象
EggCake cake2 = new EggCake(5); // 创建鸡蛋灌饼对象且鸡蛋灌饼里有5个蛋
}
}
```
定义了两个构造方法在无参构造方法中可以使用this关键字调用有参的构造方法。但是要注意this()语句之前不可以有其他代码。
#### 练习1设计加油站类和汽车类加油站提供一个给车加油的方法参数为剩余汽油数量。每次执行加油方法汽车的剩余汽油数量都会加 2。
#### 练习2智能手机的默认语言为英文。但制造手机时可以将默认语言设置为中文。编写手机类 无,参构造方法使用默认语言设计,利用有参构造方法修改手机的默认语言。
#### 练习3张三去KFC买可乐商家默认不加冰块。但是张三可以要求加 3 个冰块。请利用有参构造方法实现上述功能。
#### 练习4创建教师类类中有姓名、性别和年龄三个属性在构造方法中使用 this 关键字分别为这三个成员属性赋值。
#### 练习5一只大熊猫长 1.3 米,重 90千克。在自定义方法中使用this关键字调用类的成员变量并在控制台输出这只大熊猫的信息。
#### 练习6创建信用卡类有两个成员变量分别是卡号和密码如果用户开户时没有设置初始密码则使用"123456"作为默认密码。设计两个不同的构造方法,分别用于用户设置密码和用户未设置密码两种构造场景。

View File

@ -0,0 +1,124 @@
**继承**的基本思想是基于某个父类的扩展,并制定出一个新的子类,子类可以继承父类原有的属性和方法,也可以增加原来父类所不具备的属性和方法,或者直接重写父类中的某些方法。例如,平行四边形是特殊的四边形,如果说平行四边形类继承了四边形类,那么平行四边形类就在保留四边形类所有属性和方法的同时,还扩展了一些平行四边形类特有的属性和方法
## 实例1 使用继承表现 Pad和 Computer 的关系
创建一个电脑类 ComputerComputer 类中有屏幕属性 screen 和开机方法 startup()。现 Computer类有一个子类 Pad平板电脑除了和 Computer类具有相同的屏幕属性和开机方法以外Pad类还有电池属性 battery使用继承表现 Pad 和 Computer 的关系。代码如下∶
```java
class Computer { // 父类:电脑
String screen = "液晶显示屏"; // 属性:屏幕
void startup() { // 方法:开机
System.out.println("电脑正在开机,请等待...");
}
}
public class Pad extends Computer { // 子类:平板电脑
String battery = "5000毫安电池"; // 平板电脑的属性:电池
public static void main(String[] args) {
Computer pc = new Computer(); // 创建电脑类对象
System.out.println("computer的屏幕是" + pc.screen);
pc.startup(); // 电脑类对象调用开机方法
Pad ipad = new Pad(); // 创建平板电脑类对象
System.out.println("pad的屏幕是" + ipad.screen); // 平板电脑类对象使用父类属性
System.out.println("pad的电池是" + ipad.battery);// 平板电脑类对象使用自己的属性
ipad.startup(); // 平板电脑类对象使用父类方法
}
}
```
#### 练习1创建银行卡类并设计银行卡的两个子类 储蓄卡与信用卡。
## 实例2让平板电脑调用台式机的功能
编写一个程序,平板电脑类是普通电脑类的子类,当使用普通电脑时,普通电脑会提示"欢迎使用的信息;当使用平板电脑时,平板电脑会提示"欢迎使用iPad"的信息。代码如下∶
```java
class Computer3 { // 父类:电脑
String sayHello() { // 方法:打招呼
return "欢迎使用";
}
}
public class Pad3 extends Computer3 { // 子类:平板电脑
String sayHello() { // 子类重写父类方法
return super.sayHello() + "iPad"; // 调用父类方法并添加字符串
}
public static void main(String[] args) {
Computer3 pc = new Computer3(); // 创建电脑类对象
System.out.println(pc.sayHello());
Pad3 ipad = new Pad3(); // 创建平板电脑类对象
System.out.println(ipad.sayHello());
}
}
```
#### 练习3
设计火车类和高铁类,高铁类继承火车类,不管火车类的行进速度是多少,高铁的行进速度永远是火车的二倍。
#### 练习4
设计人类,有二个自我介绍的方法,输出"我是 XXX";设计博士类,继承人类,博士类自我介绍时输出"我是XXX 博士"。
**扩展知识:**
在开始学习使用class关键字定义类时就应用到了继承原理因为在Java中所有的类都直接或间接继承了java.lang.Obiect类。Obiect类是比较特殊的类它是所有类的父类是Java类层中的最高层类。当创建一个类时除非已经指定要从其他类继承否则都是从java.lang.Object类继承而来的所以Java中的每个类都源于java.lang.Object类如 String、Integer等类都是继承于 Object类。除此之外自定义的类也都继承于Object类。由于所有类都是Obiect子类所以在定义类时省略了extends Object语句。
## 实例3 编写 add()方法的多个重载形式
在项目中创建 OverLoadTest类在类中编写add方法的多个重载形式然后在主方法中分别输出这些方法的返回值。代码如下
```java
public class OverLoadTest {
// 定义一个方法
public static int add(int a) {
return a;
}
// 定义与第一个方法参数个数不同的方法
public static int add(int a, int b) {
return a + b;
}
// 定义与第一个方法相同名称、参数类型不同的方法
public static double add(double a, double b) {
return a + b;
}
// 定义一个成员方法
public static int add(int a, double b) {
return (int) (a + b);
}
// 这个方法与前一个方法参数次序不同
public static int add(double a, int b) {
return (int) (a + b);
}
// 定义不定长参数
public static int add(int... a) {
int s = 0;
// 根据参数个数循环操作
for (int i = 0; i < a.length; i++) {
s += a[i];// 将每个参数的值相加
}
return s;// 将计算结果返回
}
public static void main(String args[]) {
System.out.println("调用add(int)方法:" + add(1));
System.out.println("调用add(int,int)方法:" + add(1, 2));
System.out.println("调用add(double,double)方法:" + add(2.1, 3.3));
System.out.println("调用add(int a, double b)方法:" + add(1, 3.3));
System.out.println("调用add(double a, int b) 方法:" + add(2.1, 3));
System.out.println("调用add(int... a)不定长参数方法:" + add(1, 2, 3, 4, 5, 6, 7, 8, 9));
System.out.println("调用add(int... a)不定长参数方法:" + add(2, 3, 4));
}
}
```
在本实例中分别定义了6个方法在这 6个方法中前两个方法的参数个数不同所以构成.了重载关系; 前两个方法与第3 个方法比较时,方法的参数类型不同,并且方法的返回值类型也不同,所以这 3 个方法也构成了重载关系;比较第 4、第5两个方法时会发现除了参数的出现顺序不同之外其他都相同这样同样可以根据这个区别将两个方法构成重载关系; 而最后一个使用不定长参数的方法,实质上与参数数量不同是一个概念,也构成了重载。
#### 练习5
使用方法的重载描述所有的超市都支持现金付款,但大型商超还支持刷卡付款。
#### 练习6
使用方法的重载描述所有的汽车都至少有两块脚踏板,但手动挡汽车有三块脚踏板。