zhouLz-继承与多态-2015

上传人:油条 文档编号:26870999 上传时间:2018-01-02 格式:PPT 页数:113 大小:1.06MB
返回 下载 相关 举报
zhouLz-继承与多态-2015_第1页
第1页 / 共113页
zhouLz-继承与多态-2015_第2页
第2页 / 共113页
zhouLz-继承与多态-2015_第3页
第3页 / 共113页
zhouLz-继承与多态-2015_第4页
第4页 / 共113页
zhouLz-继承与多态-2015_第5页
第5页 / 共113页
点击查看更多>>
资源描述

《zhouLz-继承与多态-2015》由会员分享,可在线阅读,更多相关《zhouLz-继承与多态-2015(113页珍藏版)》请在金锄头文库上搜索。

1、1,2018年1月2日星期二,第5章,继承与多态,2,2018年1月2日星期二,继承性与多态性是面向对象程序设计的另外两个重要特性。在Java语言中,提供了能够实现继承性与多态性的完备技术,这使得更多的人们愿意将Java作为软件开发语言,进而充分地施展面向对象抽象性、封装性、继承性与多态性的优势,为构筑新时代的软件开发理念奠定了坚固基础。,3,2018年1月2日星期二,7.1 类的继承,继承机制是面向对象程序设计不可缺少的关键概念,是实现软件可重用的根基,是提高软件系统的可扩展性与可维护性的主要途径。继承是一种由已有的类创建新类的机制。所谓继承是指一个类的定义可以基于另外一个已经存在的类,即子

2、类基于父类,从而实现父类代码的重用。由继承而得到的类称为子类,被继承的类称为父类或超类。Java不支持多重继承,子类只能有一个父类。,4,2018年1月2日星期二,继承关系的UML图形符号表示法,两个类的继承关系可以用“is a”表示,即子类是父类所描述的实体集中的子集。也就是说,父类涵盖更加共性的特征,更加具有一般性,子类增加的内容更加具有个性,是一般性之外的特殊内容,因此,又可以说,这种类的继承关系充分地反映了“一般与特殊”的关系。,5,2018年1月2日星期二,7.1.1 定义子类,在Java语言中,定义子类的语法格式为: 修饰符 class 子类名 extends 父类名 子类体 其中

3、,“修饰符”是子类的访问特性说明符等;class为定义类的关键字,“子类名”是子类的名称;extends是关键字“子类体”是子类在继承父类内容的基础上,添加的特有内容。,6,2018年1月2日星期二,EmployeeClass类与ManagerClass类的关系图,特殊津贴,7,2018年1月2日星期二,/ file name:EmployeeClass.javapublic class EmployeeClass / 雇员类private String name;/ 姓名private double salary;/ 工资private String department;/ 部门publi

4、c EmployeeClass() . public EmployeeClass(String name, double salary, String department) . public void setName(String name) . public void setSalary(double salary) . public void setDepartment(String department) . public String getName() . public double getSalary() . public String getDeparyment() . pub

5、lic String toString() . ,8,2018年1月2日星期二,public ManagerClass extends EmployeeClass / 经理类private double special; / 特殊津贴public ManagerClass() . public ManagerClass(String name, double salary, String department, double special) . public void setSpecial(double special) . public double getSpecial() . publ

6、ic String toString() . ,9,2018年1月2日星期二,举例:设计与几何图元有关的类。,问题分析:几何图元是指可以绘制的基本几何图形,例如矩形、正方形、圆形、多边形等。鉴于篇幅的考虑,这里只考虑矩形与正方形。假设任何几何图元都有颜色与位置两个属性,因此应该将这些共有特性定义在一个类中,它是顶层类;而矩形还应该有长、宽两个属性,由于矩形是一种几何图元,所以它自然应该拥有几何图元的共有特性,因此可以将矩形类设计为几何图元类的子类;因为正方形是一种特殊的矩形,它的特殊性在于长与宽相等,所以应该将正方形类设计为矩形的子类。,10,2018年1月2日星期二,ShapeClass类、

7、RectangleClass类与SquareClass类之间的关系类图,ShapeClass类是几何图元的通用类;矩形是一种特定的几何图元,因此,RectangleClass类应该是ShapeClass的子类;正方形是一种特殊的矩形,所以SquareClass类是RectangleClass类的子类。,11,2018年1月2日星期二,12,2018年1月2日星期二,/ file name:ShapeClass.javaimport java.util.*;public class ShapeClass / 几何图元类 private ColorClass color; / 颜色属性 priva

8、te Point place; / 位置属性 public ShapeClass() color = new ColorClass(); place = new Point(); public ShapeClass(ColorClass color, Point place) this.color = color; this.place = place; public void setColor(ColorClass color) this.color = color; public void setPlace(Point place) this.place = place; public C

9、olorClass getColor() return color; public Point getPlace() return place; public String toString() return color.toString() + n + place.toString(); ,13,2018年1月2日星期二,/ file name:RectangleClass.javapublic class RectangleClass extends ShapeClass / 矩形类private int length; / 长private int width; / 宽public Re

10、ctangleClass() super(); length = 0; width = 0;public RectangleClass(ColorClass color, Point place, int length, int width) super(color, place); this.length = length; this.width = width;public int area() return length * width; / 计算矩形的面积public int permeter() return 2* (length * width); / 计算矩形的周长public

11、int getLength() return length; public int getWidth() return width; public void setLW(int length, int width) this.length = length; this.width = width; public String toString() return length: + length + width: + width; ,14,2018年1月2日星期二,/ file name:SquareClass.javapublic class SquareClass extends Recta

12、ngleClass / 正方形类public SquareClass() super(); public SquareClass(ColorClass color, Point place, int edge) super(color, place, edge,edge); public int getEdge() return getLength(); public void setEdge(int edge) setLW(edge, edge); ,15,2018年1月2日星期二,7.1.2 子类对父类成员的可访问特性,实际上,子类是对父类概念的延伸,它不但继承了父类的内容,还可以扩展父类

13、的某些功能。在Java语言中,子类将继承父类的成员,但对父类成员的可访问性却由访问特性控制。如果子类与父类在同一个包中,子类可以直接访问父类具有public、proteced与默认访问特性的成员,不能直接访问private成员,这部分内容需要通过父类提供的操作接口实现间接访问。如果子类和父类不在同一个包中,那么,子类继承了父类的protected、public成员变量做为子类的成员变量,并且继承了父类的protected、public方法为子类的方法,继承的成员或方法的访问权限保持不变。,16,2018年1月2日星期二,子类对象的构造过程,用子类创建对象时,不仅子类中声明的成员变量被分配了内存

14、,而且父类的成员变量也都分配了内存空间,但只将其中一部分(子类继承的那部分)作为分配给子类对象的变量。,17,2018年1月2日星期二,18,2018年1月2日星期二,练习,阅读代码,说出运行结果,class Car private int site = 4; /座位数 Car() System.out.println (载客量是+site+人); public void setSite(int site) this.site = site; void print() System.out.print(载客量是+site+人); ,class Bus extends Car Bus(int site) setSite(site); ,public static void main(String args) Bus bus = new Bus(20); bus.print();,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号