Professional Documents
Culture Documents
请为我做一份香辣肉
丝。
Jack 开始切辣椒、洗蔬菜、烹
饪香辣肉丝
请问厨师叫什么名
字?
Jack Chen
请让厨师给我切一点葱
花。
Jack 切辣椒
封装
看不到
能看到
类
属性 行为
请为我做一份香辣肉
丝。
Jack 开始切辣椒、洗蔬菜、烹
饪香辣肉丝
请问厨师叫什么名
厨师 字? 我
Jack Chen
请让厨师给我切一点葱
花。
Jack 切辣椒
封装的思想
“ 假如你吃了个鸡蛋觉得不错,
何必要认识那个下蛋的母鸡
呢?”
—— 钱钟书
对象的选择
康师傅红烧牛
Can I help
肉面,就是这
you ,sir? 个味!
请让厨师为我做一份香辣肉
丝。
您的菜好了,请慢用。
请问厨师叫什么名字?
服务生 我
抱歉,餐厅不提供此项服
务。
请让厨师给我切一点葱花。
抱歉,餐厅不提供此项服
务。
封装思想的总结
将对象的属性和行为封
类 无法访问
装起来,而将对象的属
性和行为封装起来的载
体就是类,类通常对客 属性 行为
可以访问
户隐藏其实现细节,这
就是封装的思想。
对象
类的继承
继承
3G
照相
上网
听音乐 上网
聊天 上网
听音乐
聊天
继承
打游戏
打游戏
看视频 看视频
当菜板
充电
extends 关键字
……
}
方法的重写
打开图片
用鼠标点 用手指点触
重写了父类的方法 摸屏
super 关键字
语法 super.property;
super.method();
super.do();
}
}
两点注意
Java 语言中,一个类只可以有一个父类!
子类不仅会覆盖父类的方法,还会覆盖父类的属
性!
instanceof 关键字
使用 instanceof 判断是否存在继承关系
父类名称
子类对象 instanceof
接口名称
class B
c instanceof B true
class C
c instanceof A true
多态
多态
同一个变量,同一个方法,执行出不同的结果
动物 移动 ()
鲤鱼 游过去
老鹰 飞过去
斑马 跑过去
Object 类
所有类的父类
类
n public class Person { }
类2
public class Person extends Object { }
类1
基类( object )
Object 类的三个常用方法
getClass()
• 返回对象执行时的 Class 实例
toString()
• 将对象返回为字符串形式
equals()
• 比较两个对象是否相等
方法的重载
方法的重载
嚼 吃 喝
吃 咬
吃 舔
吃
方法的重载
怎样构成方法的重载?
1. 方法名相同,参数个数不同。
2. 方法名相同,参数顺序不同。
只有返回类型不
同并不足以区分
3. 方法名相同,参数类型不同。 两个方法的重载
4. 方法名相同,参数不同,且返回类型也不同。
类的上下转型
类的上下转型
动物 父类
向下转型
向上转型
!
子类
类的向上转型
用父类声 用子类实
明对象 例化对象
示例
必须使用强制转换
这里有一个人,我们叫他 tom
instanceof
instanceof
抽象类
什么是抽象类?
它长
抽象类 什么
样子
abstract class 颜色 { } ?
什么是抽象方法?
抽象类
abstract class 老师 { 老师讲
抽象方法 的 是哪门
课?
abstract
void 讲课void
(){ 讲课
} () ;
}
没有大括号
如何利用抽象方法
系统架构师使用抽象的方法设计出一个程序
的整体架构,然后再交给程序员来实现这些
方法。
海鸥
具体
抽象 抽象
动物 鸟
具体 鸡
接口
什么是接口?
接口的声明及实现
图形类
void draw()
void
doAnything()
extends
extends
正方形类 平行四边形类
void draw() void draw()
void doAnything() void doAnything()
接口的声明及实现
图形类
接口
void draw()
void void draw()
doAnything()
extends
implements
extends
正方形类 平行四边形类
void draw() void draw()
void doAnything() void doAnything()
多重继承
接口继承接口 VS 类实现接口
interface intf1 {
class 类名 implements
语法 } 语法 接口 1, 接口 2,…, 接口 n
interface intf2 extends intf1 {
}
步兵可以射击,医务兵既可以射击又可以治疗他人
接口与抽象类的对比
抽象类
抽象类是对根源的抽象
VS 接口
接口是对动作的抽象
五个不同点
1. 子类只能继承一个抽象类,但可以实现任意多个接口
2. 抽象类中的成员变量可以是各种类型,接口中的成员变量只能是静态常
量
3. 抽象类中可以有静态方法和静态代码块等,接口中不可以
4. 接口没有构造方法,抽象类可以有构造方法