Presentation is loading. Please wait.

Presentation is loading. Please wait.

第5讲 使用类和对象编程(三) 内部类 实例 程序控制结构 选择语句.

Similar presentations


Presentation on theme: "第5讲 使用类和对象编程(三) 内部类 实例 程序控制结构 选择语句."— Presentation transcript:

1 第5讲 使用类和对象编程(三) 内部类 实例 程序控制结构 选择语句

2 目标 了解内部类的定义和使用 掌握定义简单内部类的方法 理解程序控制结构 根据程序需要设计合理的布尔表达式
运用分支语句实现选择结构的程序设计

3 内部类 类可以嵌套定义,即在一个类的类体中,还可以嵌套定义另外一个类。被嵌套的类称为内部类(Inner Class),它的上级称为外部类。内部类中还可以再嵌套另一个类,在最外层的类被称为顶层类(Top level class)。内部类的创建方法与外部类相似。实例代码3_7 使用内部类的原因: Inner class methods can access the data from the scope in which they are defined—including 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.

4 匿名内部类 有一种称为匿名内部类(anonymous inner class)的内部类,是指可以利用内部类创建不具名称的对象,并利用它访问类里的成员。匿名内部类的创建不同于普通的内部类的创建,不需要定义类名,直接用new创建对象。 class Out{        void show(){            System.out.println("this is Out showing.");        }    }  

5 public class TestAnonymousInterClass{   
    public static void main(String args[]){            TestAnonymousInterClass test=new TestAnonymousInterClass();            test.show();        }        //在这个方法中构造了一个匿名内部类        private void show(){            Out anonyInter=new Out(){// 获取匿名内部类实例                                void show(){//重写父类的方法                    System.out.println("this is Anonymous InterClass showing.");                }            };            anonyInter.show();// 调用其方法    }

6 实例一 已知圆半径,用面向对象的编程方法,计算圆面积。 分析:
一切数据和操作被封装在对象中,可以将圆作为一个对象来处理。这里的数据就是圆的半径,操作即计算圆面积。 进一步分析: 对象是类的实例化,因此需要创建一个类,属性就是半径。计算圆面积,需要获得圆的半径,而半径应该能够变化,这些操作是类的属性行为,操作在类中以方法的形式表示,因此需要在类中建立3个方法,分别用来读取半径、修改半径和计算面积。 类和方法的设计: Circle作为类名,数据为Radius,创建的3个方法:getRadius()、setRadius()和computeArea()。

7 实例一(续) 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 radius*radius* ; }

8 实例一(续) 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 :” + myCircle.computeArea()); myCirle.setRadius(myCircle.getRadius()*2.0); System.out.println(“the circle radius is :” + myCircle.getRadius() + ”the circle area is :” + myCircle.computeArea()); }}

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

10 实例2 设计一个名为Fan的类模拟风扇,属性为speed 、on、radius和color。假设风扇有3种固定的速度,用常数1、2、3表示慢、中、快速。写一个用户程序,程序中创建一个Fan对象,具有最大速度、半径为10、黄色、打开状态的属性。要求返回包含类中所有属性值的字符串。 分析:这个问题已经给了类名和属性名,我们需要设计的是如何获得和修改4个属性值,以及如何将4个属性转换为字符串。

11 小结 变量、常量的定义 类的定义 对象的创建 方法的声明 实例变量(或方法)和静态变量(或方法) 方法重载和构造方法 内部类的定义*

12 程序设计的三种基本结构 面向对象程序的主体是类及对象,对象是属性及方法的封装。
在设计一个对象的方法时,还要对具体的处理过程进行分析,并通过形式化的程序设计语言表示这个过程。从程序设计语言的宏观上看,处理过程呈现出顺序结构,从局部看,处理过程还要重复或者选择。Java提供了基本的程序控制语句处理这些结构。 这三种基本结构是“顺序结构”、“选择结构”、“循环结构” 。

13 基本控制结构示意图 图4-1 基本控制结构示意图

14 选择结构 选择结构用于判断给定的条件是否满足(真或假),以决定执行某个分支程序段。Java有几种类型的选择结构语句: 1、简单if语句;
2、双分支if…else语句; 3、嵌套if语句; 4、if…else if语句; 5、多分支switch语句等。

15 简单if语句 简单if语句又称单分支if语句,它的格式如下: 程序执行流程图如图4-2所示。 执行过程是:
{语句组;} 程序执行流程图如图4-2所示。 执行过程是: 如果布尔表达式值为真, 则执行语句组,否则, 不执行语句组。 【例4.1】判断一个整数是否能被3整除。

16 双分支if…else语句 if…else语句的格式如下: if(条件表达式){ 语句组1; } else{ 语句组2;
程序执行流程如图4-3所示 从键盘输入一个正整数,判断其是奇数还是偶数

17 嵌套if语句 当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。 其一般形式可表示如下: if(表达式) if语句;
或者为 else 嵌套可以一层一层展开,原则上没有深度的限制。但是,嵌套的层数不宜过多。如上例 if(i>k){ if(j>k) System.ou.println("i和j大于k。"); else System.ou.println("i大于k,j小于或等于k。"); }

18 If…else if 语句 当有多个分支选择时,可采用if-else-if语句,其一般形式为:
语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; else if(表达式m) 语句m; else 语句n; 其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。

19 switch语句 switch语句(又称开关语句)是和case语句一起使用的,其功能是根据某个表达式的值在多个case引导的多个分支语句中选择一个来执行。它的一般格式如下: switch(表达式){ case 判断值1:语句块1;[break;] case 判断值2:语句块2;[break;] case 判断值3:语句块3;[break;] …… case 判断值n:语句块n;[break;] default:语句块n+1 }

20 switch语句 switch后面括号中表达式的值必须是符合byte,char,short,int类型的常量表达式,而不能用浮点类型或long类型,也不能为一个字符串。 一个switch语句可以代替多个if—else语句组成的分支结构,而switch语句从思路上显得更清晰。 【例4.3】 输入一个百分制成绩,输出相应等级,等级划分如下: 100≥成绩≥90,等级为“优秀” 89≥成绩≥80,等级为“良” 79≥成绩≥70,等级为“中” 69≥成绩≥60,等级为“及格” 成绩≤60,等级为“不及格”

21 作业与实验 作业 习题3的10、11 实验 Java基本数据类型简单编程


Download ppt "第5讲 使用类和对象编程(三) 内部类 实例 程序控制结构 选择语句."

Similar presentations


Ads by Google