Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第9章 类的高级特性.ppt

Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第9章 类的高级特性.ppt

ID:50324841

大小:1.22 MB

页数:31页

时间:2020-03-08

Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第9章 类的高级特性.ppt_第1页
Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第9章 类的高级特性.ppt_第2页
Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第9章 类的高级特性.ppt_第3页
Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第9章 类的高级特性.ppt_第4页
Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第9章 类的高级特性.ppt_第5页
资源描述:

《Java应用开发与实践 教学课件 作者 刘乃琦 苏畅 第9章 类的高级特性.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本章要求:第9章类的高级特性掌握抽象类的使用掌握内部类的分类掌握成员内部类的使用掌握局部内部类的使用掌握匿名内部类的使用掌握静态内部类的使用掌握内部类的继承掌握Class类与Java反射主要内容1、抽象类2、内部类3、Class类与java反射4、使用注解功能第9章类的高级特性所谓抽象类就是只声明方法的存在而不去具体实现它的类。抽象类不能被实例化,也就是不能创建其对象。在定义抽象类时,要在关键字class前面加上关键字abstract。定义抽象类,格式如下所示:abstractclass类名{类体}在抽象类中创建的,没有实际意义的,必须要子类重写的方法称为抽象方法。抽象

2、方法只有方法的声明,而没有方法的实现,用关键字abstract进行修饰,声明一个抽象方法的基本格式如下所示:abstract<方法返回值类型>方法名(参数列表);包含一个或多个抽象方法的类必须被声明为抽象类。这是因为抽象方法没有定义方法的实现部分,如果不声明为抽象类,这个类将可以生成对象,这时当用户调用抽象方法时,程序就不知道如何处理了。9.1抽象类9.2.1成员内部类9.2.2局部内部类9.2.3匿名内部类9.2.4静态内部类9.2内部类1.成员内部类简介在一个类中使用内部类可以在内部类中直接存取其所在类的私有成员变量。本节首先介绍成员内部类。成员内部类的语法如下所示

3、:publicclassOuterClass{//外部类privateclassInnerClass{//内部类//...}}在内部类中可以随意使用外部类的成员方法以及成员变量,尽管这些类成员被修饰为private。图9-2充分说明了内部类的使用,尽管成员变量i以及成员方法g()都在外部类中被修饰为private,但在内部类中可以直接使用外部类中的类成员。9.2.1成员内部类内部类的实例一定要绑定在外部类的实例上,如果在外部类中初始化一个内部类对象,那么内部类对象就会绑定在外部类对象上。内部类初始化方式与其他类初始化方式相同,都是使用new关键字。2.使用this关键字

4、获取内部类与外部类的引用如果在外部类中定义的成员变量与内部类的成员变量名称相同,可以使用this关键字。【例9-3】在项目中创建TheSameName类,在类中定义成员变量x,定义一个内部类Inner,并在内部类中也创建x变量,在内部类的doIt()方法中分别操作两个x变量,代码如下所示。publicclassTheSameName{privateintx;privateclassInner{privateintx=9;publicvoiddoit(intx){x++;//调用的是形参xthis.x++;//调用内部类的变量xTheSameName.this.x++;/

5、/调用外部类的变量x}}}在类中如果内部类与外部类遇到成员变量重名的情况可以使用this关键字进行处理,例如在内部类中使用this.x语句可以调用内部类的成员变量x,而使用TheSameName.this.x语句可以调用外部类的成员变量x,即使用外部类名称后跟一个点操作符和this关键字便可获取外部类的一个引用。应该明确一点,在内存中所有对象被放置在堆中,将方法以及方法中的形参或是局部变量放置在栈中,如图9-4所示。在栈中的doit()方法指向内部类的对象,而内部类的对象与外部类的对象是相互依赖的,Outer.this对象指向外部类对象。局部内部类就是在类的方法中定义的

6、内部类,它的作用范围也是在这个方法体内。下面将通过一个具体的例子来说明如何定义局部内部类。9.2.2局部内部类【例9-4】在外部类的sell()方法中创建Apple局部内部类,然后创建该内部类的实例,并调用其定义的price()方法输出单价信息。publicclassSellOutClass{privateStringname;//私有成员变量publicSellOutClass(){//构造方法name="苹果";}publicvoidsell(intprice){classApple{//局部内部类intinnerPrice=0;publicApple(intpri

7、ce){//构造方法innerPrice=price;}publicvoidprice(){//方法System.out.println("现在开始销售"+name);System.out.println("单价为:"+innerPrice+"元");}}Appleapple=newApple(price);//实例化Apple类的对象apple.price();//调用局部内部类的方法}publicstaticvoidmain(String[]args){SellOutClasssample=newSellOutClass();//实例

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。