ch05面向对象编程.pdf
《ch05面向对象编程.pdf》由会员分享,可在线阅读,更多相关《ch05面向对象编程.pdf(44页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、第五章第五章 面向对象编程面向对象编程 Java程序设计 http:/ 余余 烨烨 本章学习提示本章学习提示 本章学习Java语言中面向对象编程的具体实施过程。封装与继承 覆盖与重载 多态 类的强制转换 目目 录录 封装与继承封装与继承 1 2 覆盖与重载覆盖与重载 多态机制多态机制 3 类的转换类的转换 4 封装性封装性 People eat()、sleep()、work()、date()将被描述的实体的属性和行为封装在一起,看作一个不可分割的整体,形成程序中不可分割的独立单位。private:salary、property changeSalary()calcProperty()被封装的某
2、些信息在封装体外是不可见的,只能通过内部的方法来改变它,通常称这些信息被隐藏了。被封装的属性和行为中,规定了有些被隐藏在封装体内,有些外部可见的不同的访问权限。name、sex、height、salary、property 回顾不同的访问权限回顾不同的访问权限 public protected default private 同类同类 同包不同类同包不同类 不同包,子不同包,子类类 不同包,非不同包,非子类子类 封装封装 所谓封装封装表现在以下几个方面 1.在类的定义中设置对对象中的成员变量和方法进行访问的权限。2.提供一个统一供其它类引用的方法 3.其它对象不能直接修改本对象所拥有的属性和方
3、法。封装的作用 通过封装,实现了模块化和信息隐藏,保证了数据的安全性和系统的严密性 封装实现了使用者和设计者的分离,提高了程序的可重用性 类的继承类的继承引例引例 定义一个动物的类,具有高度、重量等特征,具有吃饭、睡觉、呼吸等行为。定义一个鱼类,具有同样的特征和行为。怎么办?怎么办?要重新再写一遍么?要重新再写一遍么?用用继承继承吧!吧!通过关键字通过关键字extends让鱼类继承动物类让鱼类继承动物类 Like mother,like father/用用extends实现类的继承实现类的继承 class Animal protected float height,weight;void ea
4、t()System.out.println(animal eat);void sleep()System.out.println(animal sleep);void breathe()System.out.println(animal breathe);class Fish extends Animal /鱼类继承了鱼类继承了Animal类类 class Integration public static void main(String args)Animal an=new Animal();Fish fh=new Fish();an.breathe();fh.breathe();Exam
5、ple5_01 实实 例例 类的继承类的继承 理解继承是理解面向对象程序设计的关键 Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。在Java中,不允许多重继承。class Fish class People class Mermaid extends Fish,People 每个类最多只有一个直接的父类 终止继承关键字关键字final 类的继承类的继承 类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系以及对属性和操作的共享,即子类可以沿用父类(被继承类)的某些特征。子类也可以具有自己独立的属性和操作。子类
6、从父类继承有两个主要的方面:1.属性的继承属性的继承。例如:鱼可以继承动物的高度、重量等属性。2.方法的继承方法的继承。例如:鱼类可以继承动物吃饭、睡觉、呼吸的行为。属性继承和隐藏:子类不能访问父类的private成员,但子类可以访问其父类的public、protected成员。构造方法的继承构造方法的继承 构造方法的继承应遵守以下原则 1.如果子类没有构造方法,则它继承父类无参数的构造方法作为自己的构造方法;(子类可以无条件的继承父类不含参数的构造方法无条件的继承父类不含参数的构造方法)2.如果子类有构造方法,那么在创建子类对象时,则将先执行继承下来的父类的构造方法,然后再执行自己的构造方法
7、 实实 例例 class Animal float height,weight;Animal()System.out.println(Animal is constructed without parameters);Animal(float height,float weight)System.out.println(Animal is constructed with parameters);void eat()System.out.println(animal eat);void sleep()System.out.println(animal sleep);void breathe()
8、System.out.println(animal breathe);实实 例例 class Fish extends Animal float length;Fish()System.out.println(Fish is constructed without parameters);Fish(float length)System.out.println(Fish is constructed with parameters);class Integration public static void main(String args)Fish fh=new Fish();Fish fh=
9、new Fish(3);super(1,1);Example5_02 目目 录录 封装与继承封装与继承 1 2 覆盖与重载覆盖与重载 多态机制多态机制 3 类的转换类的转换 4 覆覆 盖盖 引例 鱼的呼吸方式跟动物的呼吸方式不一样,鱼使用的是一种吐泡的方法。怎么办?怎么办?解决方法:解决方法:重写鱼的呼吸方法!重写鱼的呼吸方法!方法的覆盖方法的覆盖 class Fish extends Animal /鱼类继承了鱼类继承了Animal类类 void breathe()/重写了动物类的重写了动物类的breathe方法,这种机制方法,这种机制称为称为覆盖覆盖 System.out.println(
10、fish breathe:bubble);class Integration public static void main(String args)Animal an=new Animal();Fish fh=new Fish();an.breathe();fh.breathe();Example5_03 实实 例例 覆盖覆盖(Overriding)在子类中定义一个与父类同名、返回类型、参数类同名、返回类型、参数类型均相同型均相同的方法,称为方法的覆盖(Overriding a method definition)。A derived class inherits methods that
11、belong to the base class.However,if a derived class requires a different definition for an inherited method,the method may be redefined in the derived class.This is called overriding the method definition.覆盖发生在子类与父类之间。方法的重写规则方法的重写规则 两同两小一大 两同:方法名相同,形参列表相同 两小:子类方法返回值类型应比父类方法返回值类型更小或相等;子类方法声明抛出的异常类型应比
12、父类抛出的异常更小或相等 一大:子类方法的访问权限应比父类方法的访问权限大或相等。注意:覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法。class BaseClass public static void test()class SubClass extends BaseClass public void test()覆盖覆盖(Overriding)当子类覆盖了父类方法后,子类的对象将无法访问父类中被覆盖的方法。但还可以在子类方法中调用父类中被覆盖的方法。问题:如何在鱼类重写了父类的breathe方法后,又能调用到父类被覆盖了的breathe方法?用用s
13、uper 实实 例例 class Fish extends Animal int height;Fish()System.out.println(Fish Constructed);void breathe()super.breathe();/利用利用super调用父类中被隐藏的方法调用父类中被隐藏的方法 super.height=50;/利用利用super调用父类中被隐藏的变量调用父类中被隐藏的变量 System.out.println(super.height);System.out.println(fish breathe:bubble);class Integration public
14、 static void main(String args)/Animal an=new Animal();Fish fh=new Fish();/an.breathe();fh.breathe();Example5_04 特殊变量super,提供了对父类的访问;可以使用super访问父类被子类隐藏的变量或覆盖的方法;每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。对于父类中包含有参数的构造方法,子类可以通过在自己的构造方法中使用super关键字来引用,而且必须是子类构造方法中的第一条语句。super Example5_05
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ch05 面向 对象 编程
限制150内