- 1、本文档共66页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章类的高级特性ppt课件
9.1 抽象类 所谓抽象类就是只声明方法的存在而不去具体实现它的类。 抽象类不能被实例化,也就是不能创建其对象 在定义抽象类时,要在关键字class前面加上关键字abstract。 定义抽象类,格式如下所示: abstract class 类名 { 类体 } 9.1 抽象类 在抽象类中创建的,没有实际意义的,必须要子类重写的方法称为抽象方法。 抽象方法只有方法的声明,而没有方法的实现,用关键字abstract进行修饰。 声明一个抽象方法的基本格式如下所示: 9.1 抽象类 包含一个或多个抽象方法的类必须被声明为抽象类。抽象类中既可以有抽象方法,也可以有一般的成员方法。 抽象方法不能使用private、static和final关键字进行修饰。 抽象类主要用来派生子类,在子类中应实现抽象类所有抽象方法,如果子类中仍有未实现的抽象方法,则子类必须声明为抽象类。 9.2 内部类 9.2.1 成员内部类 9.2.2 局部内部类 9.2.3 匿名内部类 9.2.4 静态内部类 9.2 内部类 Java中类可以嵌套定义,即在一个类定义中,还可以嵌套另外一个类的定义,被嵌套的类称为内部类。 没有嵌套在任何类中的类被称为顶层类。 9.2.1 成员内部类 1) 如果内部类没有被声明为静态的,则不能含有静态成员。 2) 内部类也是一种类成员。若该内部类没有用声明为private,则在外部类外引用它,需要给出完整的类名称:外部类名.内部类名。 3) 外部类中可以直接引用内部类名称创建类对象,但如果在该外部类之外,即使具有引用内部类权限,也要首先创建一个外部类对象,才能借助于该对象创建内部类的对象。 9.2.1 成员内部类 9.2.1 成员内部类 在内部类中可以随意使用外部类的成员方法以及成员变量,即使这些类成员为private。 但内部类的成员只有在内部类的范围内访问,不能直接被外部类使用。 9.2.1 成员内部类 内部类的实例一定要绑定在外部类的实例上,如果在外部类中初始化一个内部类对象,那么内部类对象就会绑定在外部类对象上。 内部类初始化方式与其他类初始化方式相同,都是使用new关键字。 9.2.1 成员内部类 2) 使用this关键字获取内部类与外部类的引用 如果在外部类中定义的成员变量与内部类的成员变量名称相同,可以使用this关键字。 9.2.1 成员内部类 【例9-3】 在项目中创建TheSameName类,在类中定义成员变量x,定义一个内部类Inner,并在内部类中也创建x变量,在内部类的doIt()方法中分别操作两个x变量,代码如下所示。 9.2.2 局部内部类 局部内部类就是在类的方法中定义的内部类,它的作用范围也是在这个方法体内,在这个方法体之外不能访问该内部类, 但该内部类可以访问当前代码块的常量以及此外部类的所有成员。 9.2.2 局部内部类 【例9-4】 在外部类的sell()方法中创建Apple局部内部类,然后创建该内部类的实例,并调用其定义的price()方法输出单价信息。 9.2.3 匿名内部类 在编写程序代码时,不一定要给内部类取一个名字,可以直接以对象名来代替。匿名内部类的所有实现代码都需要在大括号之间进行编写。 匿名内部类的语法如下所示: return new A() { ...//内部类体 }; A:对象名 9.2.3 匿名内部类 由于匿名内部类没有名称,所以匿名内部类使用默认构造方法来生成匿名内部类的对象。 在匿名内部类定义结束后,需要加分号标识,这个分号并不是代表定义内部类结束的标识,而是代表创建匿名内部类的引用表达式的标识。 9.2.3 匿名内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪。 创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 9.2.4 静态内部类 在内部类前添加修饰符static,这个内部类就变为静态内部类。 一个静态内部类中可以声明static成员,但是在非静态内部类中不可以声明静态成员。 静态内部类不可以使用外部类的非静态成员。 9.2.4 静态内部类 静态内部类具有以下两个特点: 创建静态内部类的对象,不需要其外部类的对象。 不能从静态内部类的对象中访问非静态外部类的对象。 9.2.4 静态内部类 【例9-6】 在静态内部类中定义main()方法,并访问内部类中的方法。 补充:泛型 泛型是将不同类型对象的同一种操作加以抽象、封装,使其享有更广泛的代码重用性。 在JDK1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,其缺点是要做显式的强制类型转换,
文档评论(0)