《第5讲使用类和对象编程三ppt课件.ppt》由会员分享,可在线阅读,更多相关《第5讲使用类和对象编程三ppt课件.ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5讲使用类和对象编程三ppt课件 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望目标了解内部类的定义和使用掌握定义简单内部类的方法理解程序控制结构根据程序需要设计合理的布尔表达式运用分支语句实现选择结构的程序设计内部类类可以嵌套定义,即在一个类的类体中,还可以嵌套定义另外一个类。被嵌套的类称为内部类(InnerClass),它的上级称为外部类。内部类中还可以再嵌套另一个类,在最外层的类被称为顶层类(Toplevelclass)。内部类的创建方法与外部类相似。实例
2、代码3_7使用内部类的原因:uInnerclassmethodscanaccessthedatafromthescopeinwhichtheyaredefinedincludingdatathatwouldotherwisebeprivate.uInnerclassescanbehiddenfromotherclassesinthesamepackage.uAnonymousinnerclassesarehandywhenyouwanttodefinecallbackswithoutwritingalotofcode.匿名内部类有一种称为匿名内部类(anonymousinnerclass)的内
3、部类,是指可以利用内部类创建不具名称的对象,并利用它访问类里的成员。匿名内部类的创建不同于普通的内部类的创建,不需要定义类名,直接用new创建对象。classOutvoidshow()System.out.println(thisisOutshowing.);publicclassTestAnonymousInterClasspublicstaticvoidmain(Stringargs)TestAnonymousInterClasstest=newTestAnonymousInterClass();test.show();/在这个方法中构造了一个匿名内部类privatevoidshow()O
4、utanonyInter=newOut()/获取匿名内部类实例voidshow()/重写父类的方法System.out.println(thisisAnonymousInterClassshowing.);anonyInter.show();/调用其方法实例一已知圆半径,用面向对象的编程方法,计算圆面积。分析:u一切数据和操作被封装在对象中,可以将圆作为一个对象来处理。这里的数据就是圆的半径,操作即计算圆面积。进一步分析:u对象是类的实例化,因此需要创建一个类,属性就是半径。计算圆面积,需要获得圆的半径,而半径应该能够变化,这些操作是类的属性行为,操作在类中以方法的形式表示,因此需要在类中建立
5、3个方法,分别用来读取半径、修改半径和计算面积。类和方法的设计:uCircle作为类名,数据为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 computeArea()return radi
6、us*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.out.println(“the circle radius is:”+m
7、yCircle.getRadius()+”the circle area is:”+myCputeArea();实例一(续)实例代码Ex3_10程序分析:声明了类Circle,方法getRadius、setRadius和computeArea()分别用来读取、修改半径和计算圆面积。主方法中先通过自定义构造方法circle(double r),实例化对象myCircle并对其成员变量进行初始化。第一行输出语句中,myCircle.getRadius()获得圆的初始化半径5.0,然后由此半径计算圆面积;下一行语句 myCirle.setRadius(myCircle.getRadius()*2.0
8、1);修改了圆的半径为10.0,再据此半径计算新的圆面积。实例2设计一个名为Fan的类模拟风扇,属性为speed、on、radius和color。假设风扇有3种固定的速度,用常数1、2、3表示慢、中、快速。写一个用户程序,程序中创建一个Fan对象,具有最大速度、半径为10、黄色、打开状态的属性。要求返回包含类中所有属性值的字符串。分析:分析:这个问题已经给了类名和属性名,我们需要设计的是如何获得和修改4个属性值,以及如何将4个属性转换为字符串。变量、常量的定义类的定义对象的创建方法的声明实例变量(或方法)和静态变量(或方法)方法重载和构造方法内部类的定义*小结程序设计的三种基本结构面向对象程序
9、的主体是类及对象,对象是属性及方法的封装。在设计一个对象的方法时,还要对具体的处理过程进行分析,并通过形式化的程序设计语言表示这个过程。从程序设计语言的宏观上看,处理过程呈现出顺序结构,从局部看,处理过程还要重复或者选择。Java提供了基本的程序控制语句处理这些结构。这三种基本结构是“顺序结构”、“选择结构”、“循环结构”。图4-1 基本控制结构示意图基本控制结构示意图选择结构选择结构用于判断给定的条件是否满足(真或假),以决定执行某个分支程序段。Java有几种类型的选择结构语句:1、简单if语句;2、双分支ifelse语句;3、嵌套if语句;4、ifelseif语句;5、多分支switch语
10、句等。简单if语句又称单分支if语句,它的格式如下:if(布尔表达式)语句组;程序执行流程图如图4-2所示。执行过程是:u如果布尔表达式值为真,u则执行语句组,否则,u不执行语句组。【例4.1】判断一个整数是否能被3整除。简单if语句双分支ifelse语句ifelse语句的格式如下:if(条件表达式)语句组1;else语句组2;程序执行流程如图4-3所示从键盘输入一个正整数,判断其是奇数还是偶数if(ik)if(jk)System.ou.println(i和和j大于大于k。);else System.ou.println(i大于大于k,j小于或等小于或等于于k。);嵌套if语句当if语句中的执
11、行语句又是if语句时,则构成了if语句嵌套的情形。其一般形式可表示如下:if(表达式)if语句;或者为if(表达式)if语句;elseif语句;嵌套可以一层一层展开,原则上没有深度的限制。但是,嵌套的层数不宜过多。如上例Ifelse if 语句当有多个分支选择时,可采用if-else-if语句,其一般形式为:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;elseif(表达式m)语句m;else语句n;其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n。然后继续
12、执行后续程序。switch语句switch语句(又称开关语句)是和case语句一起使用的,其功能是根据某个表达式的值在多个case引导的多个分支语句中选择一个来执行。它的一般格式如下:switch(表达式)case判断值1:语句块1;break;case判断值2:语句块2;break;case判断值3:语句块3;break;case判断值n:语句块n;break;default:语句块n+1switch语句switch后面括号中表达式的值必须是符合byte,char,short,int类型的常量表达式,而不能用浮点类型或long类型,也不能为一个字符串。一个switch语句可以代替多个ifelse语句组成的分支结构,而switch语句从思路上显得更清晰。【例4.3】输入一个百分制成绩,输出相应等级,等级划分如下:100成绩90,等级为“优秀”89成绩80,等级为“良”79成绩70,等级为“中”69成绩60,等级为“及格”成绩60,等级为“不及格”作业与实验作业u习题3的10、11实验uJava基本数据类型简单编程