- 1、本文档共42页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java教材课件05ppt课件
* 5.3.5 对象类型转换 前面已经讲过基本数据类型的转换,实际上Java中两个不同类型对象之间也可以转换,不过有个限制:两个转换的对象之间应该具有继承关系,也就是说只是在子类和父类的对象之间进行转换,而不是任意两个类。 一个子类对象的类型可以向上转换成它的父类类型,这个转换过程是安全的。因为父类所具有的信息,子类一般全有。当然,转换过程中会丢失属于子类而不属于父类的信息。其中大学生和研究生是学生的子类。 按照前面所说的原则,以下转换过程是安全的: UndergraduateStudent anUGS=new UndergraduateStudent(); Student aStudent=(Student)anUGS; 但是反过来,一个父类对象的类型未必可以向下转换成子类的对象的类型,因为子类具有的信息,父类未必包含。所以只有当父类对象实际上是子类的一个实例的时候,才可以转换,否则不能进行这种转换。 * 5.3 继承 5.3.6 抽象类 Java也可以创建专门的类用来当作父类,这种类称为抽象类(abstract class)。抽象类有点类似“模板”的作用,其目的是要你根据它的格式来修改并创建新的类。不能够通过抽象类直接创建对象,只能通过抽象类派生的新的类,再由新类创建对象。定义一个抽象类的格式为: abstract class 类名称{ 声明数据成员; 返回值的数据类型 方法名称(参数列表){ 定义普通的方法 } abstract返回值的数据类型 方法名称(参数列表);//定义抽象的方法 } 注意:在抽象类中,方法的定义可分为两种:一种是普通方法;另一种是抽象方法,此方法以abstract开头,且只声明了返回值的数据类型、方法名称、所需参数,但没有方法体。这样,抽象方法中的处理方式必须在子类中完全实现。 * 5.4 非访问控制符 5.4.1 static 在类中声明一个变量或方法时,还可以指定它为实例成员或类成员。其格式为: static 类型 变量名; static 返回值类型 方法名([参数列表]){ … } 上述用static修饰的变量和方法分别称为类变量和类方法,也称静态变量和静态方法。如果没有static修饰,则分别称为实例变量和实例方法。 * 5.4 非访问控制符 5.4.2 final 从安全性和面向对象程序设计上考虑,一些类不希望被继承,可以用final关键字来修饰。下列情况通常某些类被定义为final类: ⑴定义为final类通常是一些有固定作用,用来完成某种标准功能的类。例如,Java中的String类,它对编译器与解释器的正常运行有很重要的作用,所以被修饰为final类。 ⑵如果认为一个类的定义已经很完美,不需要再生成它的子类时,就说明为final类。有些方法不能被重写(覆盖),也把它限定为final方法。格式为: final 返回值类型 方法名([参数列表]){…} 注意:abstract和final不能同时修饰一个类。可用final来作为常量的修饰符。一个类的成员变量也可以被修饰成final,一旦定义为final,则它的值在整个程序执行过程中都不会改变。 * 5.4 非访问控制符 5.4.3 volatile、native、synchronized 用volatile修饰的成员变量称为易失变量,通常这个变量同时被几个线程控制和修改,也就是说,这个成员变量不仅被当前程序所掌握,在运行过程可能存在其他未知的程序操作来影响和改变该变量的取值。 用native修饰的是一种特殊方法,一般用来声明用其他语言编写的方法体并具体实现方法功能。由于native的方法是用其他语言在外部编写,所以,所有的native方法都没有方法体,而使用一个“;”代替。 如果用synchronized修饰一个类方法,那么在调用执行前,将把系统类中对应的当前类的对象加锁。如果用synchronized修饰一个对象方法,那么在调用执行前,将把当前对象加锁。 synchronized主要用于多线程共存的程序中的协调与同步,详见多线程一章部分。 * 5.5 Java的名字空间和包 5.5.1 Java的名字空间 Java注意解决名字空间的冲突问题,全局变量不再是语言的组成部分,即没有全局的方法,也没有全局的变量。所有的变量和方法都是在类中定义,并且是类的重要组成部分,而每个类又是包的一部分,因此每个Java变量或方法都可以用全限定的名字表示。包括包名、类名、域名三部分,之间用“.”分隔。 Java编译器将Java程序的每个类的编译代码,即字节码放在不同的文件中,这些编译代码文件名与类同名,但加上扩展名(.class),因此一个包含有多个类定义的源文件编译后有多个.cl
文档评论(0)