《网络程序设计》第3讲课件

上传人:我*** 文档编号:139958795 上传时间:2020-07-25 格式:PPT 页数:30 大小:154KB
返回 下载 相关 举报
《网络程序设计》第3讲课件_第1页
第1页 / 共30页
《网络程序设计》第3讲课件_第2页
第2页 / 共30页
《网络程序设计》第3讲课件_第3页
第3页 / 共30页
《网络程序设计》第3讲课件_第4页
第4页 / 共30页
《网络程序设计》第3讲课件_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《《网络程序设计》第3讲课件》由会员分享,可在线阅读,更多相关《《网络程序设计》第3讲课件(30页珍藏版)》请在金锄头文库上搜索。

1、2020/7/25,1,Java语言程序设计Programming in Java,西南大学 计算机与信息科学学院 Faculty of Computer 注意:若此时直接父类中没有定义不带参数的构造方法,则编译时将出现编译错误。也就是说,若父类中不含有不带参数的构造方法,就必须在子类构造方法的第一条语句用super关键字显式的调用父类构造方法。,2020/7/25,12,程序实例,J_Teacher.java,2020/7/25,13,子类与父类间的类型转换,隐式类型转换:将子类对象转换为父类对象,此时不需要强制类型转换运算符“( )”。 例如:J_Teacher tom = new J_T

2、eacher(); J_Employee a = tom; 显式类型转换:将父类对象转换为子类对象,此时需要强制类型转换运算符“( )”。 例如:J_Teacher tom = new J_Teacher(); J_Employee a = tom; J_Teacher b = (J_Teacher)a;,2020/7/25,14,注意: J_Teacher tom = new J_Teacher(); J_Employee a = tom; J_Teacher b = (J_Teacher)a; /正确 J_Employee a = new J_Employee(); J_Teacher b

3、 = (J_Teacher)a; /错误 如果两个类之间不存在继承关系,一般不能进行类型转换。,2020/7/25,15,运算符: instanceof,运算符instanceof用来判断一个引用类型表达式所指向的实例对象是否是某种引用类型的实例对象。格式为: 引用类型表达式 instanceof 引用类型 例如: p instanceof J_Employee 上面的条件为 true, 当且仅当引用p所指向的对象是类J_Employee(或其子类)的实例对象,2020/7/25,16,运算符: instanceof,Instanceof可以用在引用类型转换中,即先判断一个引用表达式所指向的实

4、例对象是否是目标类型的实例对象,如果得到确认是,再进行转换。 例如: if(a instnceof J_Teacher) b=(J_Teacher)a; else b = new J_Teacher();,2020/7/25,17,多态性,多态性指的是在类定义中出现多个构造方法或出现多个同名的成员方法,或者是在当前定义的类中出现与其父类中成员方法同签名的成员方法。 静态的多态性重载 在编译时就能够被识别(静态联编、前期绑定) 针对的是同一个类内的同名方法(重载的方法) 动态的多态性重写 在程序运行时才被识别(动态联编、后期绑定) 重写父类的方法(同样签名),2020/7/25,18,方法调用绑

5、定,将一个方法调用同一个方法主体关联起来被称作绑定。 静态绑定:在程序执行前进行绑定(由编译器和连接程序实现) 动态绑定:运行时根据对象的类型进行绑定。 在Java中,动态绑定是自动发生的。,2020/7/25,19,静态多态性,针对的是同一个类内的同名方法(重载的方法) 在编译时就能够被识别(静态绑定) 例如: public int square(int x) return x * x; public double square(double x) return x * x; ,2020/7/25,20,识别重载方法,识别标志: 参数的个数、类型、数据类型的排列顺序 返回值不能做为识别的标志

6、,2020/7/25,21,程序实例,J_Student.java,2020/7/25,22,动态多态性,子类中重写了父类的成员方法(同样签名,并且子类的成员方法应当具有与其父类相应成员方法相同或更广的访问权限) 在程序运行时才能被识别(动态绑定) 利用动态多态性使得可以通过父类型的引用调用子类型的成员方法。,2020/7/25,23,识别重写方法,运行时由JVM识别引用变量所指向的实例对象是该引用表达式类型的实例对象,还是其子类的实例对象。,2020/7/25,24,程序实例,J_Teacher.java,2020/7/25,25,注意1:只有非private方法才可以被覆盖。 程序实例:P

7、rivateOverride.java,2020/7/25,26,注意2:对成员域的直接访问不具有动态多态性。 程序实例:FieldAccess.java,2020/7/25,27,注意3:动态多态性只针对非静态的成员方法,静态成员方法不具有动态多态性。 程序实例:StaticPolymorphism.java,2020/7/25,28,关键字super,Java中用关键字super表示当前类的父类。 关键字super的用途: 在子类型的非静态成员方法中访问其父类型被覆盖的成员域:super.父类型的成员域 在子类型的非静态成员方法中调用其父类型被覆盖的成员方法:super.父类型的成员方法(

8、调用参数列表) 在子类型的构造方法的第一条语句处调用其父类型的构造方法:super(父类型构造方法的调用参数列表),2020/7/25,29,成员访问控制方式: protected,关键字protected处理的是继承的概念。 同一个包内的其他类都能访问该成员 若该成员所在类的访问控制方式是默认模式,则其他软件包中的任何成员方法都不能访问该成员;若该成员所在类的访问控制方式是public,则在其他软件包中能够访问该成员的只能是该成员所在类的子类。,2020/7/25,30,final,关键字final的含义通常为“这是无法改变的”。 关键字final可以用来修饰非抽象类、类的成员域、类的非抽象成员方法以及接口的成员域。 final成员域:可以理解为常量,必须在定义时对其进行赋值,且赋值后其值不可再改变; final成员方法:该方法不能被当前类子类的成员方法覆盖; final类:不能派生子类。,

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

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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