《Java技术》第五次作业
(一)学习总结
1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结。
2.汽车租赁公司,出租汽车种类有客车、货车和皮卡三种,每辆汽车除了具有编号、名称、租金三个基本属性之外,客车有载客量,货车有载货量,皮卡则同时具有载客量和载货量。用面向对象编程思想分析上述问题,将其表示成合适的类、抽象类或接口,说明设计思路并画出类图。
设计一个汽车抽象类,包含三种共有属性:编号、名称、租金;
设计两个接口:载客接口包含显示载客数方法,载货接口包含显示载货数方法;
设计三种汽车类:客车、货车、皮卡,三种汽车都继承汽车抽象类;其中客车继承载客接口,货车继承载货接口,皮卡继承载货和载客接口。
3.阅读下面程序,分析代码是否能编译通过,如果不能,说明原因,并进行改正。如果能,列出运行结果
interface Animal{
void breathe();
void run();
void eat();
}
class Dog implements Animal{
public void breathe(){
System.out.println("I'm breathing");
}
void eat(){
System.out.println("I'm eating");
}
}
public class Test{
public static void main(String[] args){
Dog dog = new Dog();
dog.breathe();
dog.eat();
}
}
不能,Dog类继承Animal接口,Dog类必须实现接口的抽象所有方法
接口的抽象方法默认为public权限,实现接口的类中覆写的抽象方法必须写public
4.运行下面的程序
import java.util.Arrays;
public class Test{
public static void main(String[] args){
String[] fruits = {"peach","banana","orange","apple"};
Arrays.sort(fruits);
for(int i = 0;i < fruits.length;i++)
{
System.out.println(fruits[i]);
}
}
}
程序输出的结果是升序排序的。查看String 类的源码,说明是如何实现的?如果现在希望对输出的结果进行降序排序,该如何处理?修改上述代码,实现按照字母顺序逆序排序。
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
private final int offset;
private final int count;
public String() {
this.offset = 0;
this.count = 0;
this.value = new char[0];
}
public String(String original) {
int size = original.count;
char[] originalValue = original.value;
char[] v;
if (originalValue.length > size) {
int off = original.offset;
v = Arrays.copyOfRange(originalValue, off, off+size);
} else {
v = originalValue;
}
this.offset = 0;
this.count = size;
this.value = v;
}
定义一个新的String对象时(写String类的有参构造时),定义一个新的String对象original,声明新数组originalValue,排序时,如果originalValue长度大于original对象的count(当字符串大于新的字符串original)时,对originalValue排序,排序后数组给新数组v;如果不大于,代表两个代表字符串的数组相同
(二)实验总结
1.音乐盒
程序设计思路:
设计一个MusicBox接口,Pianobox类、ViolinBox类继承MusicBox接口;
设计一个MusicBoxFactory类,作为过渡端,在过渡端中创建音乐盒对象,将创建对象的具体过程屏蔽隔离起来。
2.职工信息
问题1.Date类的使用
将工作日期和出生日期设为Date类,输入日期时,输入“yyyy-MM-dd”格式的字符串,再将字符串转换为Date类储存
问题2.输出日期时,将Date类转换为字符串输出
public String getBirthday(){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //指定格式化日期模板“yyyy-MM-dd”
String str=sdf.format(birthday); //将Date对象转换成字符串
return str; //输出字符串
}
问题3.Comparator、Comparatable接口的使用
3.宠物商店
程序设计思路:
设计一个Pet接口、Dog类和Cat类,Dog、Cat类继承Pet接口;
设计一个PetShop类,内含宠物商店的操作方法,add(): 添加宠物方法,seach(): 查找宠物方法,kind(): 统计用户购买宠物方法;
设计一个test类,实现用户购买过程
(三)代码托管
- 码云commit历史截图