第七章 面向对象
../案例/Animal.java ../案例/Food.java ../案例/Rabbit.java、Dog.java ../案例/Carrot.java、Bone.java
多态的作用
提高代码的可重用性 降低模块之间的耦合度
抽象类和抽象方法
形状类Shape需要提供用于计算面积和周长的方法, 但是形状本身没有被确定,那么计算周长和面积的 方法就无法确定,此时我们就需要使用抽象类和抽 象方法。 由于Shape类计算周长和面积的方法无法确定,那么 就可以将这样的方法声明为抽象的,以便在具体的 子类中进行实现。 抽象方法的声明
作业
作业四:
某公司的雇员分为以下若干类:
Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日 月份。方法:getSalary(int month) 根据参数月份来确定工资,如果 该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。属性: 月薪 HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工 作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、 每月工作的小时数 SalesEmployee:Employee的子类,销售人员,工资由月销售额和 提成率决定。属性:月销售额、提成率 BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售 人员,工资由底薪加上销售提成部分。属性:底薪。 写一个程序,把若干各种类型的员工放在一个Employee数组里,写 一个方法,打印出某月每个员工的工资数额。注意:要求把每个类 都做成完全封装,不允许非私有化属性。
[修饰符] abstract class 类名 [extends 父类名]{类体} 抽象类和普通类除了使用abstract修饰外和普通的类相 似 抽象类中可以没有抽象方法 但是一旦某个有抽象方法,那么这个类必须被声明为 抽象类
抽象类
抽象类
因为抽象类不是一个具体的类,所以无法实例化, 但是抽象类可以用于声明对象
接口的定义
在Java中接口不仅仅是程序开发过程中“约定”, 更是更加抽象化的抽象类 接口的定义
[修饰符] interface 接口名{[常量];[抽象方法];}
接口的实现
接口的实现
定义类时通过implements关键字实现接口
接口实现的语法
[修饰符] class 类名 [extends 父类名] [implements 接口 1,接口2,……]{类体部分}
用于判断一个对象是不是某个类的实例
本章总结
多态 包的使用 抽象类 接口
package 关键字 import 关键字 abstract关键字 final 关键字 interface关键字 implements关键字
作业
作业一
设计一个台灯类Lamp其中台灯有灯泡这个属性,还有 开灯(on)这个方法,设计一个灯泡类 其中有红灯泡 (RedBuble) 和绿灯泡(GreenBuble) 他们都有一个发亮 的方法,请设计出一段代码可以使台灯开启灯泡发亮, 并且保证替换不同种类的灯泡台灯类代码不被修改。
什么是多态
多态顾名思义即为多种形态的意思 Java中多态的含义
发送消息给某个对象,让这个对象自行决定采用哪种行为响 应这个消息 子类对象的引用赋值给父类引用变量来实现动态的方法调用
Java中形成多态的前提
继承 重写 向上转型
多态的应用
多态的应用
动物园有这些动物:狗、兔子等,饲养员每天都会 给这些动物喂食,狗喜欢吃骨头、而兔子喜欢吃胡 萝卜,通过Java程序模拟饲养员喂食 参考代码:
作业二:
设计一个继承关系其中存在动物类Animal、狗类Dog和 猫类Cat,对于猫类和狗类都有一个吃eat方法,但是猫 和狗的吃eat方法的实现不同,请合理的设计出Animal Dog Cat这3个类关系
作业
作业三:
设计一个形状类(接口)Shape,方法:求周长和求面积 形状类(接口)的子类(实现类):Rect(矩形),Circle(圆形) Rect类的子类:Square(正方形) 不同的子类会有不同的计算周长和面积的方法 创建三个不同的形状对象,放在Shape类型的数组里,分 别打印出每个对象的周长和面积
声明包
包的导入
一旦需要使用另外一个包中的类时,需要将该类导 入到当前类中,如需要在程序中使用java.util包下的 Scanner类,需要将给类先导入到使用的类中 类导入的语法
import 包名.类名; 或者 import 包名.*;
导入类
instanceof运算符
instanceof运算符的使用
抽象类
抽象类可以被继承,在子类中实现抽象类的所有抽 象方法,以达到抽象类的具体化
抽象类
具体化后的子类方法就可以用来创建对象了
接口
在软件工程中,经常将一个大的项目分由不同的开 发小组共同开发,各个小组的开发工作是并行的。 在很多时候,对于不同小组的程序员来说,清楚地 说明各自的软件如何相互作用,并就此达成统一 “约定”是很重要的。这种情况下,每一小组都可 以在对其他小组怎么编写代码一无所知的情况下, 就能编写自己的代码,并且各自小组编写的代码能 很好的协同工作。接口就是这样的“约定”。
[修饰符] abstract 返回值类型 方法名([参数列表]); 注意:因为抽象方法无法确定具体执行的功能,所有 抽象方法没有方法体,需要在小括号后加上分号
抽Hale Waihona Puke 方法抽象类 如果一个类的某些功能比较抽象或者无法在本类中 具体实现,可以将这个类声明为抽象的,那么这些 抽象或者无法具体实现的功能可以在子类中完成。 抽象类的语法
接口的实现
一个类可以实现多个接口,从而解决了Java单继承 的缺点。
接口的继承
在Java中类之间的继承关系是单继承,也就是说一 个类有且只能有一个父类。 而Java中的接口实现了多继承,也就是说一个接口 可以有多个父接口
接口的作用
提高程序的重用性 提高程序的可扩展性 降低程序的耦合度 实现了多继承
Java语言基础 第七章 面向对象
上章内容
static关键字 封装 继承
extends 方法重写 super关键字 向上转型 向下转型
本章内容
多态 包的使用
package 关键字 import 关键字
抽象类
abstract关键字
接口
多态的概念
接口的作用
实现多继承
接口的作用
实现了多继承
接口的作用
降低程序耦合度
接口的作用
降低耦合度
包的使用
什么是包
包是Java用于提供访问保护和命名空间管理的方式
简单的理解,包就是用来将Java中类和接口等进 行分类管理的工具,类似于操作系统中的目录 包的声明
package 包名; 包名的前半部分一般使用倒置的域名,后半部分一般 采用该包下类分类名(或者功能名),如:package com.bochy.util; 包的声明必须是整个类文件的第一行语句