面向对象程序设计
万物皆对象
冯 君,李永,李群,薛红芳编
面向对象程序设计 1
1
面向对象的特性-封装性
学习目标: 1.理解封装的概念2.掌握private关键字3.掌握构造方法4.掌握方法重载 重点与难点:封装性的理解,构造方法的使用,方法重载的定义 理解为什么需要封装 public class Teacher{ 封装的定义 private String name; // 姓名 1.封装,就是隐藏实现细节 // 返回姓名 2.将属性私有化,提供公有 public String getName() { 方法访问私有属性 return name; 3.通过这些公有方法访问私 } 有属性,这样做的好处是 // 设定姓名 防止外界直接对属性进行 public void setName(String name) { 不合理的更改。 this.name = name; } } ? ? ? 理解为什么需要构造方法 public class Teacher { 构造方法的定义: private String name; //姓名 构造方法负责对象成员的初始化 // 构造方法 工作,为实例变量赋予合适的初 public Teacher() { 始值。 name = \张三\构造方法必须满足以下语法规则: } 1、方法名与类名相同 } 2、没有返回类型 //存在问题,每个教师在new出构造方法的调用:创建对象时自动 来时的名字都一样,最简单的解调用。这好比是人刚出生父母就给 决办法——带参构造方法 他起好了名字。 public Teacher(String name) 带参构造方法:通过调用带参数的 { 构造方法,简化对象初始化的代码。 this.name=name; 特殊的this:this表示当前对象, } 为了区分成员变量和参数,如果 不同名,可以不加this。 方法重载的定义: Math.max(1,2); 1.方法名相同。 Math.max(1.0F,2.0F); 2.方法的参数类型、个数、顺序 Math.max(1.0,2); 至少有一项不相同。 运行时,Java虚拟机先判断给定参3.方法的返回类型可以不相同。 数的类型,然后决定到底执行哪个4.方法的修饰符可以不相同。 max()方法 思考:构造方法可以重载吗?(可以) 最低要求 难点 代码改错 课后复习题 上机题
面向对象程序设计 2
? ? ? 使用private关键字修饰某个成员变量后,这个成员变量可以被同一包中的其它类访问吗? 在Java程序中,代码封装带给我们的好处是什么? 请通过代码封装,实现如下需求: 编写一个类Book,代表教材: 具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200 为各属性设置赋值和取值方法 具有方法:detail,用来在控制台输出每本教材的名称和页数 编写测试类BookTest进行测试:为Book对象的属性赋予初始值,并调用Book对象的detail方法,看看输出是否正确 编写一个类Book2,代表教材: 具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200 具有方法:Sdetail,用来在控制台输出每本教材的名称和页数 具有带参数的构造方法:用来完成对象的初始化工作,并在构造方法中完成对页数的最小值限制 编写测试类Book2Test进行测试:初始化一个Book2对象,并调用该Book2对象的detail方法,看看输出是否正确 编写一个类Book3,代表教材: 具有属性:名称(title)、页数(pageNum)、类型(type) 具有方法:detail,用来在控制台输出每本教材的名称、页数、类型 具有两个带参构造方法:第一个构造方法中,设置教材类型为“计算机”(固定),其余属性的值由参数给定;第二个构造方法中,所有属性的值都由参数给定 编写测试类Book3Test进行测试: 分别以两种方式完成对两个Book3对象的初始化工作,并分别调用它们的detail方法,看看输出是否正确 改进上学期所编写的宠物猫程序:运用封装、构造方法及构造方法的重载 编写一个宠物猫类,能吃,能喝,能睡,能运动,能捉老鼠。 编写一个测试类,对宠物猫类进行测试。 ? ? ? 最低要求 难点 代码改错 课后复习题 上机题
面向对象程序设计 3
2
? 继承性和多态性
学习目标: 1.理解Java程序设计语言中继承含义 2.能够灵活运用Java继承机制编程 3.理解Java程序设计语言中多态性含义 4.能够灵活运用Java多态性编程 一、继承: 1 引入: 举例1 生活中的继承 ? 生活中,继承的例子随处可见 动物 食草动物 食肉动物 谁是父类?谁是子类?能说出继承的特点吗? 继承需要符合的关系:is-a,父类更通用、子类更具体 举例2 巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗? 引擎数量 汽车 外观颜色 刹车 行为 属性 请问:出租车包含哪些属性和行为呢? 最大载客数量 报站 最大载重量 卸货 所属公司 最大载客数量 打发票 注:子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性。 最低要求 难点 代码改错 课后复习题 上机题
面向对象程序设计 4
? ? 2 思考两个问题 问题一:Java中为什么引入继承机制? 问题二:Java中怎样实现继承? 3 程序举例 (1)程序需求如下: 开发教师类,其中教师分为Java教师以及.NET教师,各自的要求如下: Java教师 属性:姓名、所属学院 方法:授课(步骤:打开Eclipse、实施理论课授课)、自我介绍 .NET教师 属性:姓名、所属学院 方法:授课(步骤:打开Visual studio 2005、实施理论课授课)、自我介绍 (2)代码实现如下: 1) Java教师类实现代码: public class JavaTeacher { private String name; // 教师姓名 private String school; // 所在学院 public JavaTeacher(String myName, String mySchool) { name = myName; school = mySchool; } public void giveLession(){ System.out.println(\启动 Eclipse\System.out.println(\知识点讲解\System.out.println(\总结提问\} public void introduction() { System.out.println(\大家好!我是\的\ } } 2) .net教师类实现代码如下: public class DotNetTeacher { private String name; // 教师姓名 private String school; // 所在学院 public DotNetTeacher(String myName, String mySchool) { name = myName; school = mySchool; } public void giveLession(){ System.out.println(\启动 Visual Studio 2005\System.out.println(\知识点讲解\System.out.println(\总结提问\} public void introduction() { System.out.println(\大家好!我是\的\} } 最低要求
难点
代码改错
课后复习题
上机题