使用类和对象编程(三).ppt_第1页
使用类和对象编程(三).ppt_第2页
使用类和对象编程(三).ppt_第3页
使用类和对象编程(三).ppt_第4页
使用类和对象编程(三).ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5讲 使用类和对象编程(三),内部类 实例 程序控制结构 选择语句,目标,了解内部类的定义和使用 掌握定义简单内部类的方法 理解程序控制结构 根据程序需要设计合理的布尔表达式 运用分支语句实现选择结构的程序设计,内部类,类可以嵌套定义,即在一个类的类体中,还可以嵌套定义另外一个类。被嵌套的类称为内部类(Inner Class),它的上级称为外部类。内部类中还可以再嵌套另一个类,在最外层的类被称为顶层类(Top level class)。内部类的创建方法与外部类相似。实例代码3_7 使用内部类的原因: Inner class methods can access the data from t

2、he scope in which they are definedincluding data that would otherwise be private. Inner classes can be hidden from other classes in the same package. Anonymous inner classes are handy when you want to define callbacks without writing a lot of code.,匿名内部类,有一种称为匿名内部类(anonymous inner class)的内部类,是指可以利用内

3、部类创建不具名称的对象,并利用它访问类里的成员。匿名内部类的创建不同于普通的内部类的创建,不需要定义类名,直接用new创建对象。,classOut voidshow() System.out.println(thisisOutshowing.); ,publicclassTestAnonymousInterClass publicstaticvoidmain(Stringargs) TestAnonymousInterClasstest=newTestAnonymousInterClass(); test.show(); /在这个方法中构造了一个匿名内部类 privatevoidshow()

4、OutanonyInter=newOut()/获取匿名内部类实例 voidshow()/重写父类的方法 System.out.println(thisisAnonymousInterClassshowing.); ; anonyInter.show();/调用其方法 ,实例一,已知圆半径,用面向对象的编程方法,计算圆面积。 分析: 一切数据和操作被封装在对象中,可以将圆作为一个对象来处理。这里的数据就是圆的半径,操作即计算圆面积。 进一步分析: 对象是类的实例化,因此需要创建一个类,属性就是半径。计算圆面积,需要获得圆的半径,而半径应该能够变化,这些操作是类的属性行为,操作在类中以方法的形式表

5、示,因此需要在类中建立3个方法,分别用来读取半径、修改半径和计算面积。 类和方法的设计: Circle作为类名,数据为Radius,创建的3个方法:getRadius()、setRadius()和computeArea()。,class Circle private double radius; public Circle(double r) radius=r; public double getRadius() return radius; public void setRadius(double newRadius) radius=newRadius; public double comp

6、uteArea() return radius*radius*3.14159;,实例一(续),public class Ex3_10 public static void main(String args) Cricle myCircle=new Circle(5.0); System.out.println(“the circle radius is :” + myCircle.getRadius() + ”the circle area is :” + myCputeArea(); myCirle.setRadius(myCircle.getRadius()*2.0); System.ou

7、t.println(“the circle radius is :” + myCircle.getRadius() + ”the circle area is :” + myCputeArea(); ,实例一(续),实例代码Ex3_10程序分析:声明了类Circle,方法getRadius、setRadius和computeArea()分别用来读取、修改半径和计算圆面积。主方法中先通过自定义构造方法circle(double r),实例化对象myCircle并对其成员变量进行初始化。第一行输出语句中,myCircle.getRadius()获得圆的初始化半径5.0,然后由此半径计算圆面积;下一

8、行语句 myCirle.setRadius(myCircle.getRadius()*2.01);修改了圆的半径为10.0,再据此半径计算新的圆面积。,实例2,设计一个名为Fan的类模拟风扇,属性为speed 、on、radius和color。假设风扇有3种固定的速度,用常数1、2、3表示慢、中、快速。写一个用户程序,程序中创建一个Fan对象,具有最大速度、半径为10、黄色、打开状态的属性。要求返回包含类中所有属性值的字符串。 分析:这个问题已经给了类名和属性名,我们需要设计的是如何获得和修改4个属性值,以及如何将4个属性转换为字符串。,变量、常量的定义 类的定义 对象的创建 方法的声明 实例

9、变量(或方法)和静态变量(或方法) 方法重载和构造方法 内部类的定义*,小结,程序设计的三种基本结构,面向对象程序的主体是类及对象,对象是属性及方法的封装。 在设计一个对象的方法时,还要对具体的处理过程进行分析,并通过形式化的程序设计语言表示这个过程。从程序设计语言的宏观上看,处理过程呈现出顺序结构,从局部看,处理过程还要重复或者选择。Java提供了基本的程序控制语句处理这些结构。 这三种基本结构是“顺序结构”、“选择结构”、“循环结构” 。,图4-1 基本控制结构示意图,基本控制结构示意图,选择结构,选择结构用于判断给定的条件是否满足(真或假),以决定执行某个分支程序段。Java有几种类型的

10、选择结构语句: 1、简单if语句; 2、双分支ifelse语句; 3、嵌套if语句; 4、ifelse if语句; 5、多分支switch语句等。,简单if语句又称单分支if语句,它的格式如下: if(布尔表达式) 语句组; 程序执行流程图如图4-2所示。 执行过程是: 如果布尔表达式值为真, 则执行语句组,否则, 不执行语句组。 【例4.1】判断一个整数是否能被3整除。,简单if语句,双分支ifelse语句,ifelse语句的格式如下: if(条件表达式) 语句组1; else 语句组2; 程序执行流程如图4-3所示 从键盘输入一个正整数,判断其是奇数还是偶数,if(ik) if(jk) S

11、ystem.ou.println(i和j大于k。); else System.ou.println(i大于k,j小于或等于k。); ,嵌套if语句,当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。 其一般形式可表示如下: if(表达式) if语句; 或者为 if(表达式) if语句; else if语句; 嵌套可以一层一层展开,原则上没有深度的限制。但是,嵌套的层数不宜过多。如上例,Ifelse if 语句,当有多个分支选择时,可采用if-else-if语句,其一般形式为: if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3

12、; else if(表达式m) 语句m; else 语句n;,其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。,switch语句,switch语句(又称开关语句)是和case语句一起使用的,其功能是根据某个表达式的值在多个case引导的多个分支语句中选择一个来执行。它的一般格式如下: switch(表达式) case 判断值1:语句块1;break; case 判断值2:语句块2;break; case 判断值3:语句块3;break; case 判断值n:语句块n;break; default:语句块n+1 ,switch语句,switch后面括号中表达式的值必须是符合byte,char,short,int类型的常量表达式,而不能用浮点类型或long类型,也不能为一个字符串。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论