资源目录
压缩包内文档预览:
编号:21836180
类型:共享资源
大小:21.32MB
格式:ZIP
上传时间:2019-09-06
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
25
积分
- 关 键 词:
-
大学
java
程序设计
教程
赵辉
课件
ppt
- 资源描述:
-
大学JAVA程序设计教程-赵辉-课件PPT,大学,java,程序设计,教程,赵辉,课件,ppt
- 内容简介:
-
第4章 深入面向对象程序设计 本章内容提要 面向对象的程序设计方法力求符合人脑的思维方式,通过符合人类思维的更抽象的客观世界模型,降低、分解问题的难度和复杂性,并以此来解决问题。 4. 继承 继承的定义 在Java语言中,用extends关键字来表示一个类继承了另一个类,被继承的类称为父类、超类或基类,派生的新类称为子类。 例如: public class Sub extends Base 4. 继承 1父类与子类 父类和子类的关系可以用自然语言描述为 : 子类is a父类。 例4-1子类继承父类 子类与父类的关系类似于家族关系,继承关系可以一直传递下去。4. 继承 2继承的限制 (1)子类和父类位于同一个包中 子类继承父类中public、protected和默认访问级别的成员变量和成员方法。 (2)子类和父类位于不同的包中 子类继承父类中public和protected访问级别的成员变量和成员方法。 例4-2继承的限制 4. 继承 3类继承的原则 (1)子类只能有一个直接父类 (2)继承具有传递性 (3)继承不能循环 (4)除Object类外,所有类都有父类4. 继承 属性隐藏 子类继承父类时,不需要重新定义父类中可以被继承的属性。 某些情况下,子类需要对从父类继承来的属性变量重新加以定义,使父类和子类的属性同名但不同值,这种机制称为属性的隐藏。 例4-3属性隐藏 4. 继承 方法覆盖 如果在子类中定义的一个方法,其名称、返回类型及参数定义正好与父类中某个方法的名称、返回类型及参数定义相同,则可以说,子类的方法覆盖了父类的方法。 方法的参数定义相同指方法中所有对应顺序的参数的类型相同,并且参数的个数相同。 4. 继承【例4-4】方法的覆盖4. 继承直接访问父类的学制:4直接访问子类的学制:3调用子类的方法(已覆盖的方法)访问子类的学制:3 方法覆盖的其他要求:(1)子类方法不能缩小父类方法的访问权限。 (2)子类方法不能抛出比父类方法更多的异常。 (3)方法覆盖只存在于子类和父类(包括直接父 类和间接父类)之间。 4. 继承 (4)父类的静态方法不能被子类覆盖为非静态方 法。 (5)子类可以定义与父类的静态方法同名的静态方 法,以便在子类中隐藏父类的静态方法 (6)父类的非静态方法不能被子类覆盖为静态方 法。 (7)父类的私有方法不能被子类覆盖。 4. 继承 super与this关键字 1引用构造方法 在子类的构造方法中,可以使用super代表指定的某个父类的构造方法;使用this关键字可以代表同一类中不同的构造方法。 当调用子类的构造方法创建对象时,如果在子类的构造方法中没有显式的调用父类的构造方法,则super()方法将被自动调用。4. 继承【例4-5】super与this关键字4. 继承create a student:John, he is a graduateStudentcreate a student:Tom, he is a graduateStudenthis tutor:Bill, his specialty direction:computer 2引用隐藏变量 在Java语言中,变量的隐藏有两种: 其一,子类成员变量和父类成员变量同名,父类变量隐藏; 其二,类的局部变量和类的成员变量同名,隐藏类的成员变量。4. 继承【例4-6】被覆盖变量的访问4. 继承stu_no = 40011stu_no is 30011stu_no of Student is 10011stu_no of GraduateStudent is 20011 3引用覆盖方法 当子类的某个方法覆盖了父类的一个方法,可以通过super关键字访问父类的方法,而通过this关键字则可以访问当前类中的方法。 super关键字不能多重使用。例如,super.super()就是非法操作。 4. 继承 【例4-7】被覆盖方法的访问4. 继承stu_no of Student is 10011stu_no of GraduateStudent is 20011stu_no of GraduateStudent is 30011 Java语言的多态可以分编译时多态和运行时多态。 编译时多态又称为静态多态,主要体现为方法的动态重载; 运行时多态又称为为动态多态,主要体现为动态绑定。4.2 多态 方法重载 对于类的方法(包括从父类中继承的方法),如果有两个方法的方法名相同,但参数不一致,那么可以说,一个方法是另一个方法的重载方法。 参数不一致包括参数数目的不同,也包括参数顺序和参数类型的不同。 4.2 多态 重载方法必须满足以下条件: (1)方法名相同。 (2)方法中对应的参数类型、个数至少有一项不相同。 (3)方法的返回类型可以不相同。 (4)方法的修饰符可以不相同。 在一个类中不允许定义两个方法名相同,并且参数定义也完全相同的方法。 4.2 多态 例4-8方法重载的定义和使用4.2 多态a studenta graduate studenta graduate student : Tom 对象造型 把一个类的子类引用赋值给父类变量,称为向上造型。 例如: Student s = new GraduateStudent(); 把父类对象赋值给子类对象需要强制类型转换,称为向下造型。 向下造型必须满足这样一个前提条件:父类对象必须是从子类对象向上造型过来的。4.2 多态 对象造型机制必须遵守下面3条原则:(1)类对象只能转换为有继承关系的子类或父类对象,不能转换为没有继承关系的类的实例。(2)一个类的实例也是其所有基类的实例。(3)对象转换为接口的条件是,其类或某个父类实现了该接口。 例4-9对象的向上造型与向下造型4.2 多态 动态绑定 由于类之间的继承关系,导致父类和子类中存在同名的方法,对于具有动态类型的对象,在运行时应该选择哪个方法来执行呢? 此时的规则是:由最近赋值给对象变量的值的类型决定。这就是所谓的方法与方法体的后期绑定,又称为动态绑定。4.2 多态【例4-10】动态绑定4.2 多态a studenta graduate studenta graduate studenta graduate student :Tom抽象类的定义 abstract class extends implements 成员变量声明; . ()throws abstract ()throws 4.3 抽象类 抽象类的使用 由于抽象类是对一种具体概念的抽象,因此,抽象类不能被实例化。定义抽象类的目的是要依据它的格式来扩展出新的类,因此,抽象类定义了没有具体实现的抽象方法,而将这些具体实现保留到从抽象类派生出的新类中定义。4.3 抽象类例4-11使用抽象类4.3 抽象类Rectangle:Line Color = blue, Fill Color =yellow, Width =20, Height =10Circle:Line Color = red, Fill Color =green, Radius = 5.5 为了既能够实现多重继承的功能,又不希望引入多重继承的复杂性和低效率,Java提供了接口(interface)。接口是用来实现多重继承功能的一种结构,它在语法上与类相似,接口中有属性和方法,接口间可以形成继承关系。 4.4 接口接口的定义 public interface extends public static final ; public abstract ()throws ; 4.4 接口 interface EditShape final String S = “SUNW”; void changeFont(); 接口的定义与类的定义非常相似,但与类不同,接口之间可以多重继承,即一个接口可以继承多个接口。 4.4 接口 接口的实现 类的声明中用implements关键字来表示一个类实现了某个接口。 class extends implements 例4-13接口的实现4.4 接口 接口的多态 接口把方法描述与方法实现分开,不同的实现类对同一个方法有不同的实现方式,但对外具有一个统一的接口,在运行时根据具体实现类的实现展现不同的功能。4.4 接口【例4-14】使用接口4.4 接口上机考试标准化考试Chinses课的考试 内部类指在一个类的类体内部定义的类。 内部类所在的类称为外包类。 内部类有多种形式,按照内部类是否含有显示的类名,可以将内部类分为实名内部类和匿名内部类。4.5 内部类 实名内部类 1定义格式 class extends implements 类体 4.5 内部类 由于内部类被看作是类的成员,因此内部类的修饰符与类成员的修饰符相似,可以用private、protected、static等修饰。 例4-15简单、直观的实名内部类4.5 内部类4.5 内部类2使用方式 在外包类的类体中使用实名内部类时: 实名内部类名 对象名= new实名内部类名(构造方法参数列表); 在外包类之外的其他类的类体中使用该外包类的实名内部类: 外包类名.内部类名 对象名= new 外包类名(参数列表).new 内部类名(参数列表); 在访问实名内部类的静态成员属性和静态成员方法时: 外包类名.实名内部类.静态属性名; 外包类名.实名内部类.静态方法名(参数列表); 例4-16实名内部类的使用4.5 内部类 匿名内部类 匿名内部类不具有类名,不能具有抽象方法和静态方法,并且不能派生出子类。 1定义格式 new 父类名(父类的构造方法参数列表) 类体 4.5 内部类 2使用方式 如果需要使用匿名内部类的实例对象,可
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。