面向对象程序设计11

面向对象程序设计11

ID:39750200

大小:287.32 KB

页数:34页

时间:2019-07-10

面向对象程序设计11_第1页
面向对象程序设计11_第2页
面向对象程序设计11_第3页
面向对象程序设计11_第4页
面向对象程序设计11_第5页
资源描述:

《面向对象程序设计11》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、继承继承,指以原有的类为基础来创建一个新类,从而达到代码复用的目的。利用继承,可以来创建一个具有公共属性的类,然后根据需要创建具有特有属性的新类以适用于不同的情况。如彩色电视与液晶电视的关系。Java语言只支持单继承,被继承的类称为父类,继承而来的类则称为子类。继承是在原有父类基础上添加程序代码建立新类,而这个新类既能够运行自己定义的方法,也可以运行父类中定义的方法,从而复用代码。继承的实现定义继承的形式为:[访问权限]class类名[extends父类]{……}其中,“访问权限”指public、private,“extends”为继承关键字,后面跟父类名。1.子类对父类成员的

2、继承子类继承父类所有的非私有属性的成员变量和成员方法,但不继承父类的构造函数,在子类的构造函数中可以使用super()调用父类的构造函数。举例:设计一个学生类,属性有姓名(name)、年龄(age)、私房钱(money)。由学生类派生出本科生类Undergraduate和研究生类Graduate,本科生类增加属性:专业(specialty),研究生类增加属性:研究方向(studyDirection)。每个类都有相关数据的输出方法。classStudent//学生类{publicStringname;//姓名publicintage;//年龄privateintmoney;//私

3、房钱}classUndergraduateextendsStudent//本科生类{publicStringspecialty;//专业}classGraduateextendsStudent//研究生类{publicStringstudyDirection;//研究方向}classJCTest{publicstaticvoidmain(String[]args){UndergraduatebenKe=newUndergraduate();benKe.name="张三";benKe.age=22;//benKe.money=120;//不能继承benKe.specialty="

4、计算机网络";System.out.println("姓名:"+benKe.name+"年龄:"+benKe.age+"专业:"+benKe.specialty);GraduateyJS=newGraduate();yJS.name="李四";yJS.age=25;yJS.studyDirection="嵌入式软件开发";System.out.println("姓名:"+yJS.name+"年龄:"+yJS.age+"研究方向:"+yJS.studyDirection);}}2.构造方法的调用子类可以继承父类的非私有成员变量和方法,但不能继承父类的构造方法,但可调用父类构造方法

5、:(1)子类可以无条件地调用父类不含参数的构造方法;(2)对于父类中包含有参数的构造方法,子类可以通过在自己的构造方法中使用super关键字来引用,而且必须是子类构造方法中的第一条语句。supersuper引用。使用关键字super可以引用被子类隐藏的父类的成员变量或或被子类重写的方法,这称为super引用。super引用的语句格式为:super.〈成员变量名〉super.〈方法名〉特别注意:(1)在子类构造方法中,使用super调用父类构造方法的语句必须为构造方法中的第一个语句。(2)当父类中没有构造方法或只有无参构造方法时,系统会为子类构造方法自动加上super语句,相当于

6、显示在构造方法中调用super()。(3)子类构造方法的第一个语句是使用this关键字来调用本类的另一个构造方法,那么,Java系统就不会默认该子类的构造方法隐含调用父类的构造方法。3、类的成员覆盖在类的继承中,若子类新增的成员名称与父类成员相同,则称为成员覆盖(overriding)。其目的是修改父类的属性和行为。若子类声明了与父类同名的变量,则父类的变量被隐藏起来,直接使用的是子类的变量,但父类的变量仍占据空间,可通过super或父类名来访问。在子类中定义了与父类同名的变量,从而隐藏了父类成员变量,这种隐藏变量可加super前缀来访问。classA{intx=100;}cl

7、assBextendsA{intx=200;voidprint(){System.out.println("Subclass:"+x);System.out.println("Superclass:"+super.x);}publicstaticvoidmain(Stringargs[]){(newB()).print();}}程序运行结果:Subclass:200Superclass:100类的成员覆盖方法覆盖Java允许子类对父类的同名方法进行重定义,也就是子类中定义的方法与父类中已定义

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。