(一)学习总结
1.阅读下面程序,分析是否能编译通过?如果不能,说明原因。应该如何修改?程序的运行结果是什么?为什么子类的构造方法在运行之前,必须调用父 类的构造方法?能不能反过来?
编译不能通过,super关键字应该放在子类构造方法的最前面。
运行结果:
2.阅读下面程序,分析程序中存在哪些错误,说明原因,应如何改正?正确程序的运行结果是什么?
animal.sleep();错误;向上转型只能调用子类继承,不能调用子类新定义的方法;
Dog dog = animal;错误;向下转型出现了错误;
3.运行下列程序
(1)程序的运行结果如下,说明什么问题?
说明toString方法不写也可以被调用
(2)那么,程序的运行结果到底是什么呢?利用eclipse打开println(per)方法的源码,查看该方法中又调用了哪些方法,能否解释本例的运行结果?
源码: public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
(3)在Person类中增加如下方法
重新运行程序,程序的执行结果是什么?说明什么问题?
可参考教材P229
当该类添加了toString方法后,覆盖了原有的方法。
4.汽车租赁公司,出租汽车种类有客车、货车和皮卡三种,每辆汽车除了具有编号、名称、租金三个基本属性之外,客车有载客量,货车有载货量,皮卡则同时具有载客量和载货量。用面向对象编程思想分析上述问题,将其表示成合适的类、抽象类或接口,说明设计思路。现在要创建一个可租车列表,应当如何创建?
思路:创建一个出租汽车抽象类,具有编号、名称和租金属性,定义两个接口,定义载客量接口,载重量借口。
5.阅读下面程序,分析代码是否能编译通过,如果不能,说明原因,并进行改正。如果能,列出运行结果。
不能通过编译。
在类的声明中用implements子句来表示一个类使用某个接口,在类中可以使用接口中定义的常量,而且必须实现接口中定义的所有方法。
6.其他需要总结的内容。
(1)抽象类中可以有抽象方法也可以有普通方法
(2)抽象类不能用new实例化,但他的子类可以,利用向上转型
(3)子类非抽象类时必须重写抽象类中所有的抽象方法
(4)在类中实现接口所定义的方法时,方法的声明必须与接口中所定义的完全一致。在类中实现接口所定义的方法时,必须显式地使用public修饰符,否则将被系统警告为缩小了接口中定义的方法的访问控制范围。
(5)重载定义:方法名称相同,参数的类型或个数不同;对权限没有要求;范围:发生在一个类中;
覆写定义:方法名称,参数的类型,返回值类型全部相同;被覆写的方法不能拥有更严格的权限;发生在继承类中。
(二)实验总结
实验四 1:思路:定义Bank类,输入属性;使用静态方法welcome()方法,借助输出语句将“欢迎来到建设银行”及基本操作“1.开户;2.存款;3.取款;4.退出;请选择您需要的服务选项”。然后通过构造方法实现。
2:(1)定义员工类,具有姓名、年龄、性别属性。
(2)定义管理层类,继承员工类,有自己的属性职务和年薪
(3)定义职员类,继承员工类,并有自己的属性所属部门和月薪。
(4)定义一个测试类,进行测试。
3:设计一个平面图形抽象类和一个立体图形抽象类;设计球类、圆柱类,圆锥类、矩形类、三角形类、圆类,分别继承平面图形抽象类和立体图形抽象类。
实验五:定义一个宠物接口,含有获得价格、数量、种类、品种、编号、改变数量的方法;创建Cat类和Dog类,并完成get(),set()方法。
(三)代码托管(务必链接到你的项目)