《Java程序设计及应用》-电子教案-李宗军 03 2

上传人:E**** 文档编号:89430110 上传时间:2019-05-25 格式:PPT 页数:20 大小:2.92MB
返回 下载 相关 举报
《Java程序设计及应用》-电子教案-李宗军 03 2_第1页
第1页 / 共20页
《Java程序设计及应用》-电子教案-李宗军 03 2_第2页
第2页 / 共20页
《Java程序设计及应用》-电子教案-李宗军 03 2_第3页
第3页 / 共20页
《Java程序设计及应用》-电子教案-李宗军 03 2_第4页
第4页 / 共20页
《Java程序设计及应用》-电子教案-李宗军 03 2_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《《Java程序设计及应用》-电子教案-李宗军 03 2》由会员分享,可在线阅读,更多相关《《Java程序设计及应用》-电子教案-李宗军 03 2(20页珍藏版)》请在金锄头文库上搜索。

1、第7讲:面向对象(2),内容提要,接口与抽象类 引用类型的类型转换 其他修饰符 类实例对象的创建过程,教学要求,重点掌握前三项内容,最后一项内容要理解。,接口,在Java中提到接口,有两种含义:一是Java接口,Java语言中存在的结构,和类(class)相似,是一种Java引用类型;二是一个成员方法,即API 。 Java接口的定义有两部分:接口头和接口体。格式如下: public | abstract interface 接口名 extends 接口列表 常量声明; 方法声明; ,程序举例,interface T static final String S1=“abc“; String S

2、2=“def“; / S2 的修饰符和 S1 的相同 public abstract void func1(); void func2(); /func2 的修饰符和 func1 的相同 ,接口的继承与实现,与类相似,接口之间可以有继承关系,而与类的单继承不同的是,接口的继承允许多重继承。例如,若已经定义了两个接口A、B,可以定义C来继承A和B。如下: interface C extends A, B /多个父接口之间用逗号分隔 . . 一个具体的类采用implements关键字来实现它,例如: class D implements A,B . . 实现类也可以是抽象类,这时是部分实现了接口。

3、,抽象类,类与接口是两个极端的情况,前者是所有方法都得到了实现,后者是所有方法都没有实现。在程序设计过程中,有时还需要一种中间状态,那就是只需要部分方法实现,其余的是抽象方法,这就是抽象类存在的必要性。 当然抽象类中的方法可以全部都是抽象的,也可以全部都是实现的,这是两种极端的情况。定义一个抽象类的语法是: 访问修饰符 abstract class 抽象类名 abstract void func(); . . ,说明,(1)抽象类必须采用修饰符abstract。 (2)含有抽象方法的类必须声明为抽象类。 (3)抽象类不能使用关键字new实例化,但抽象类可以有构造方法。 (4)抽象类是一种特殊的

4、类,遵循类的单继承规则和(单/多)接口实现规则。 一个类可以在继承一个父类的同时,实现一个或多个接口,例如: class D extends C implements A,B . . 其中A、B是两个接口,C是父类。,引用类型的类型转换,自动类型转换 在具有继承关系的类与类之间,或者接口与接口之间,或者具有实现关系的接口和类之间,由下层类型向上层类型转换时,发生自动类型转换。自动类型转换也称为类型自动提升。 1 interface I 2 public void fun(); 3 4 5 class T1 implements I 6 public void fun() 7 8 9 class

5、 T2 extends T1 10 11 class Test 12 public static void main(String args) 13 I i= new T1();/合法,发生自动类型转换 14 i= new T2(); /合法 15 T1 t1=new T2(); /合法 16 17 ,强制类型转换 在具有继承关系的类之间或者具有实现关系的接口和类之间,由上层类型向下层类型转换时,发生强制类型转换,注意其前提是对象的类型必须是转换目标类型本身或者是其子孙类型,即obj instanceof RefType表达式的值为true时,否则不能转换。,例程,1 interface I

6、2 public void fun(); 3 4 class T1 5 public void fun() 6 7 class T2 extends T1 8 class T3 extends T2 9 10 class K extends T1 11 12 class Test 13 public static void main(String args) 14 T1 t1= new T3(); 15 T2 t2= (T2)t1; /合法,发生强制类型转换 16 T3 t3=(T3)t2; /合法 17 t3 = (T3)t1; /合法 18 19 t1=new T1(); 20 t2=(T

7、2)t1; /非法,因为 t1 指向的对象是 T1 类型的 21 22 t1= new K(); 23 t2=(T2)t1; /非法,因为虽然 T2,K 都继承了 T1,但 t1 24 /指向的对象是 K 类型的,不是 T2 类型的 25 26 K a = new K(); 27 I b=(I)a; /合法 28 t1=(T1)b; /合法 29 t2=(T2)b; /非法 30 K c=(K)b; /合法 31 c=(K)t1; /合法 32 33 ,自动打包/拆包机制,从JDK 1.5中引入了一个新的机制,基本类型的自动打包和其对应的引用类型的自动拆包机制。在JDK 1.5之前,基本类型与

8、其封装类之间的转换作如下处理(以int类型为例): int i = 123; Integer ic = new Integer(i); /把基本类型打包为一个对象 i= ic.intValue(); /把一个对象拆包为基本类型 而在JDK 1.5及以后的版本中,可以如下使用: int i=123; Integer ic=i; /自动把 i 打包成对象 i=ic; /自动把 ic 拆包为基本类型 这是一个很好的改进,方便了编程。,其他修饰符,final static native transient strictfp volatile assert,final修饰符,final是最终、最后的意思

9、,即不能再发生变化、终结了。因此,若final修饰变量(不管是局部变量还是成员变量),则变量一旦被赋值后就不能再改变其值了;若final修饰方法,则该方法就不能再被覆盖了,因为要动态(即在程序运行过程中)修改方法的功能的办法就是采用覆盖;若采用final修饰类,则该类就不能再被继承,当然final类的方法也就不能被覆盖了,这是因为动态修改类的定义的办法只能是在继承的基础上修改,而覆盖的前提是能够继承,现在继承都不允许了,当然其方法也就不能被覆盖了。,static,static修饰符可以修饰: 成员属性; 成员方法; 代码块。 static不能修饰方法内的局部变量(包括方法体内的局部变量和形式参

10、数)。,native,一个native方法(也称作本地方法)就是一个Java程序调用非Java代码的接口。native方法的实现采用非Java语言实现,比如C、Fortran、汇编语言等。这个特征并非Java所特有,很多其他的编程语言都有这一机制,比如在C中,可以用extern“C“告知C编译器去调用一个C的函数。因为在外部实现了方法,所以在java代码中,只需要声明方法头就可以了,类似Java抽象方法的声明那样。native可以和其他一些修饰符连用,但是abstract方法和接口方法不能用native来修饰。,transient,transient 只能修饰类的成员变量,标记为transie

11、nt的变量,在类实例对象被存储(也称为序列化)时,这些变量状态不会被持久化,详情见7.4.4节。 strictfp(strict float point) 意思是精确计算浮点数。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字,Java的编译器以及运行环境在对浮点运算的表达式采取一种近似于我行我素的行为,以致于得到的结果往往无法令人满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么Java编译器以及运行环境会依照浮点规范IEEE-754来执行精确的浮点计算。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就用关键字st

12、rictfp。 可以将一个类、Java接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,类实例对象的创建过程,Java类实例化的先后顺序为: (1)如果有static代码块,也称为static initializer,则首先运行static代码块;若有继承关系,则首先执行父类的,再执行子类的。 (2)若有继承关系,则给父类对象的成员属性赋默认值。 (3)若有继承关系,则调用父类对象的构造方法,完成父类对象的构建。 (4)对对象的成员属性赋默认值。 (5)调用对象的构造方法最终完成对象的构建。 对成员属性赋默认值,如3.2.1节中的表3.1所示。,小结,接口与抽象类 引用类型的类型转换 其他修饰符 类实例对象的创建过程,作业,习题 3 6,7,8,9,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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