第4章面向对象(下) - 补充案例课件

发布时间 : 星期五 文章第4章面向对象(下) - 补充案例课件更新完毕开始阅读

博学谷——让IT教学更简单,让IT学习更有效

}

// 学号

private int sid;

public void setSid(int sid) { }

public int getSid() { }

// 我们的需求是学号相同的人就是同一个人. public boolean equals(Object obj) { }

// 判断是否为当前对象 if (this == obj) { }

// 为了呈现的健壮性,加入类型判断 if (!(obj instanceof Student)) { }

Student s = (Student) obj; return (this.sid == s.sid);

return false; return true; return sid; this.sid = sid;

2、定义测试类Example12,为学号赋值,并打印使用“==”和重写equals()方法的比较结果,代码如下:

public class Example12 { }

public static void main(String[] args) { }

Student Lily = new Student(); Lily.setSid(200);

Student Lucy = new Student(); Lucy.setSid(200);

System.out.println(\System.out.println(\

运行结果如图4-12所示。

图4-12 运行结果

17

博学谷——让IT教学更简单,让IT学习更有效

三、案例总结

1、Object类是Java中所有类的父类,每个类都直接或间接继承自该类。

2、Object类中的equals()方法比较的是内存地址值,和“==”比较结果一致。底层代码如下:

public boolean equals(Object obj) { return (this == obj); }

实际开发中很少比较内存地址值,所以我们常常会根据自身需求重写equals()方法。

案例4-13 多态的作用 一、案例描述

1、 考核知识点

编 号:00104009 名 称:多态

2、 练习目标

? 了解多态的概念、多态的好处和弊端 ? 掌握如何实现多态

3、 需求分析

在Java中为了实现多态,允许使用一个父类类型的变量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。多态提高代码了的扩展性和可维护性。为了帮助初学者掌握如何实现多态,本案例将实现一个多态程序来演示如何实现多态。

4、 设计思路(实现原理)

1)编写Animal接口,接口中定义sleep()方法。

2)Cat类实现Animal接口的方法,并定义另一个方法catchMouse()

3)编写测试类Example13,使Cat对象指向父类Animal的引用 ,并通过该引用调用sleep()方法。

二、案例实现

1、编写Animal接口及其实现类Cat。代码如下:

interface Animal { }

class Cat implements Animal {

void catchMouse() { }

public void sleep() { }

18

System.out.println(\睡觉\System.out.println(\抓老鼠\void sleep();

博学谷——让IT教学更简单,让IT学习更有效

}

2、定义测试类Example13,Cat对象指向Animal引用,并使用父类Animal引用调用sleep()方法。代码如下:

public class Example13 { }

public static void main(String[] args) { }

// 多态

Animal animal = new Cat(); animal.sleep();

运行结果如图4-13所示。

图4-13 运行结果

三、案例总结

1、多态是指对象在不同时刻表现出来的不同状态,在Java中,允许使用一个父类类型的变量来引用一个子类类型的对象。

2、多态的前提:

(1) 要有继承关系。 (2) 要有方法重写。

(3) 要有父类引用指向子类对象。

3、多态的好处是提高代码的扩展性和可维护性。

4、多态的弊端是父类或者接口只能调用自己具备的成员,不能访问子类特有的成员。

案例4-14 对象的类型转换 一、案例描述

1、 考核知识点

编 号:00104010

名 称:对象的类型转换 2、 练习目标

? 掌握如何实现对象的类型转换

3、 需求分析

在多态的学习中,涉及到将子类对象当做父类类型使用的情况,这时进行强制类型转换可能会出现出错。为了让初学者熟悉对象的类型转换,本案例将演示一个子类与父类之间类型转换过程中出现的错误。

编写一个接口Animal,接口中定义sleep()方法,编写两个类Cat和Pig分别实现接口,再编写一

19

博学谷——让IT教学更简单,让IT学习更有效

个测试类Example14实现对象的类型转换。

4、 设计思路(实现原理)

1)编写Animal接口,接口中定义sleep()方法。 2)Cat类和Pig类分别实现Animal接口的方法 3)编写测试类Example14对对象的类型进行转换,使Cat向上转型为Animal类型,然后再让Animal类型转换为Pig类型。

二、案例实现

1、编写Animal接口及其实现类Cat。代码如下:

interface Animal { }

class Cat implements Animal { }

class Pig implements Animal { }

public void sleep() { }

System.out.println(\猪整天睡觉\public void sleep() { }

System.out.println(\猫晚上睡觉\void sleep();

2、定义测试类Example14,Cat对象指向Animal引用,并使用父类Animal引用调用sleep()方法。代码如下:

public class Example14 { }

public static void main(String[] args) { }

Animal animal = new Cat(); Pig pig = (Pig) animal; pig.sleep();

运行结果如图4-14所示。

图4-14 错误提示

三、案例总结

1、向下类型转换时,需要注意被转换对象的真实类型是否和需要转换的对象类型相同,否则容易报

20

联系合同范文客服:xxxxx#qq.com(#替换为@)