说明:以下习题涵盖今日授课内容(类与对象、封装、包)以及之前的内容(方法、数组、Random、流程控制等)。
题目按时间顺序排列:随堂练习 为课上布置的基础作业,进阶练习 为课后综合挑战题。
以下练习对应课堂代码
Demo02.java、Demo03.java、Demo04.java中的注释作业。
创建 Teacher 类,包含:
id)、姓名(name)、年龄(age)teaching)——输出 id+name+age老师在授课、休息(sleep)——输出 id+name+age老师在休息创建 Phone 类和 PhoneTest 测试类:
brand)、价格(price)call)、发短信(sendMessage)创建矩形类,包含:
length)、宽度(width)创建圆形类,包含:
radius)创建三角形类,包含:
分析诗句「两只黄鹂鸣翠柳,一行白鹭上青天」,创建对应类和测试类:
HuangLi):sing(String s) 方法BaiLu):up(String s) 方法分析描述「一辆汽车在路上行驶,一队自行车并排骑行」,创建对应类和测试类:
Car):品牌、颜色属性 + drive() 方法Bike):车型属性 + ride() 方法参照 Person 类的封装方式,创建一个 StudentV2 类:
name,公开)、年龄(age,私有)getAge() 方法获取年龄在已有 Person 类基础上,为 name 属性也添加 private 修饰,并配置对应的 setter/getter 方法。
创建 Bird 类,定义 3 个私有成员变量,并对每个成员变量设置赋值和取值的方法(getter/setter),要求参数名与成员变量同名时使用 this 关键字。
为 Product 类创建测试类 ProductTest,创建商品对象并通过 setter 赋值,通过 getter 输出所有属性值。
模仿 p2 包的做法,创建以下包结构并编写类:
com.lovecoding.testHello 类,包含一个 sayHello() 方法,输出"Hello from package!"Hello 类的方法以下为综合挑战题,融合多个知识点,难度逐步递增。
定义一个 Book(图书)类,包含以下成员:
title(书名,String)、author(作者,String)、price(价格,double)showInfo() —— 输出该书的所有信息在 main 方法中创建 3 个 Book 对象,分别赋值并调用 showInfo() 方法。
阅读以下代码,写出运行结果:
public class Test {
int a;
double b;
String c;
boolean d;
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.a);
System.out.println(t.b);
System.out.println(t.c);
System.out.println(t.d);
}
}
阅读以下代码,写出运行结果:
public class Student {
String name;
int score;
public static void main(String[] args) {
Student s1 = new Student();
s1.name = "小明";
s1.score = 90;
Student s2 = s1;
s2.name = "小红";
s2.score = 95;
System.out.println(s1.name + ":" + s1.score);
}
}
创建一个 BankAccount(银行账户)类,要求:
accountNo(账号,String)、balance(余额,double)setBalance(double balance) —— 如果余额小于 0,输出"余额不能为负数";否则赋值getBalance() —— 返回余额deposit(double amount) —— 存款(金额必须大于 0)withdraw(double amount) —— 取款(金额不能超过余额,且必须大于 0)在测试类中创建账户对象,测试存款和取款功能。
定义一个 Student 类(属性:学号 id、姓名 name,使用封装),再定义一个 StudentManager 类,包含以下方法:
// 创建一个包含 n 个学生对象的数组,并为每个学生赋值
public static Student[] createStudents(int n)
// 遍历学生数组,输出所有学生信息
public static void printStudents(Student[] students)
在 main 方法中调用上述方法,创建 5 个学生并输出。
在包 com.lovecoding.game 下创建以下类:
Player 类(实体类,封装):
id(int)、name(String)、level(int)GameDemo 类(业务类):
initPlayers(),返回包含 3 个 Player 对象的数组randomPlayer(Player[] players),随机返回数组中某个 Player 对象GameTest 类(测试类):
initPlayers() 获取玩家数组randomPlayer() 随机抽取一名玩家,输出其信息利用方法的 4 种声明方式,完成以下工具类 MathTools:
// 1. 无参无返回值:输出 1~100 的所有质数
public static void printPrime() {}
// 2. 有参无返回值:输出 n~m 之间所有整数之和
public static void printSum(int n, int m) {}
// 3. 有参有返回值:判断一个数是否是回文数,返回 true/false
public static boolean isPalindrome(int num) {}
// 4. 无参有返回值:返回一个 1~100 之间的幸运数字(使用 Random)
public static int getLuckyNumber() {}
定义一个 Score 类(属性:name String、score int,封装),完成以下功能:
Score 对象,存入数组中score 从高到低排序提示:冒泡排序时比较的是
scores[j].getScore()而不是数组元素本身。
将之前的猜数字游戏改造为面向对象版本,要求:
Game 类:
target(目标数字)、maxRange(最大范围)、attempts(已猜次数)Game(int maxRange) —— 在 1~maxRange 之间随机生成目标数字guess(int num) —— 判断猜测结果,返回 "大了/小了/猜对了!"GameTest 类:
Game 对象(范围 1~100)Scanner 让用户循环输入猜测数字guess() 方法判断,直到猜对为止,输出总共猜了多少次在包 com.lovecoding.system 下创建完整的学生成绩管理系统,包含以下类:
Student 类(实体类,封装):
id(int)、name(String)、scores(int[],存储三门课成绩)getAverage() 方法返回平均分StudentSystem 类(业务类):
initData() —— 创建 5 个 Student 对象并返回 Student[] 数组printAll(Student[] students) —— 输出所有学生信息(含平均分)sortByAverage(Student[] students) —— 按平均分降序排序searchByName(Student[] students, String name) —— 根据姓名查找学生并返回该学生对象(找不到返回 null)SystemTest 类(测试类):
| 序号 | 所属部分 | 核心知识点 | 难度 |
|---|---|---|---|
| 练习 1 | 随堂 | 类定义、对象创建 | ⭐ |
| 练习 2 | 随堂 | 类定义、类间关系 | ⭐ |
| 练习 3 | 随堂 | 类定义、方法封装 | ⭐ |
| 练习 4 | 随堂 | 类定义、π常量的使用 | ⭐ |
| 练习 5 | 随堂 | 类定义、三角形属性 | ⭐ |
| 练习 6 | 随堂 | 对象数组、循环创建对象 | ⭐⭐ |
| 练习 7 | 随堂 | 对象数组、1对N关系建模 | ⭐⭐ |
| 练习 8 | 随堂 | 封装、setter合法性校验 | ⭐⭐ |
| 练习 9 | 随堂 | 封装、private + getter/setter | ⭐⭐ |
| 练习 10 | 随堂 | 封装、this关键字 | ⭐⭐ |
| 练习 11 | 随堂 | 封装、getter/setter使用 | ⭐⭐ |
| 练习 12 | 随堂 | 包声明、同包访问 | ⭐⭐ |
| 进阶 1 | 进阶 | 类定义、对象创建、方法调用 | ⭐ |
| 进阶 2 | 进阶 | 成员变量默认初始化值 | ⭐ |
| 进阶 3 | 进阶 | 对象引用与内存共享 | ⭐⭐ |
| 进阶 4 | 进阶 | 封装、合法性校验 | ⭐⭐ |
| 进阶 5 | 进阶 | 方法 + 对象数组 + 遍历 | ⭐⭐ |
| 进阶 6 | 进阶 | 包、封装、Random、对象数组 | ⭐⭐⭐ |
| 进阶 7 | 进阶 | 方法 4 种声明方式、质数/回文数算法 | ⭐⭐⭐ |
| 进阶 8 | 进阶 | 封装 + 对象数组 + 冒泡排序 | ⭐⭐⭐ |
| 进阶 9 | 进阶 | 面向对象版猜数字(封装 + Random + Scanner + 循环) | ⭐⭐⭐⭐ |
| 进阶 10 | 进阶 | 综合大挑战(包 + 封装 + 对象数组 + 排序 + 查找 + 平均分) | ⭐⭐⭐⭐⭐ |