《Java面向对象程序设计 教学课件 ppt 作者 邹蓉 电子教案 第4章 类和对象》由会员分享,可在线阅读,更多相关《Java面向对象程序设计 教学课件 ppt 作者 邹蓉 电子教案 第4章 类和对象(49页珍藏版)》请在金锄头文库上搜索。
1、4 类和对象,4.1 引例:“人”的抽象 4.2 类 4.3 对象 4.4 类的封装 4.5 静态成员 4.6 包和实用类 4.7 应用实例,4.1 引例:“人”的抽象,【例4-1】Person类及对它的调用 Person.java,4.2 类,4.2.1 类的定义 4.2.2 成员变量 4.2.3 成员方法,4.2.1 类的定义,最简单的类定义格式: Modifiers class ClassName ClassBody 例如: public class Goods private class Content . . ,4.2.2 成员变量,类的成员变量就是类的属性,描述了类的特性 两种形式
2、:类变量(static静态的)和实例变量(非静态的),4.2.2 成员变量,实例变量的声明 语法: Modifiers DataType memberName; 例如: private String name; private int age;,4.2.2 成员变量,实例变量的初始化 声明实例变量时可以直接赋初值,例如: private String name = “张三“; private int age = 12; 如果没有被赋初值,它们将被按照数据类型的默认值初始化,4.2.3 成员方法,成员方法描述了类能够完成的操作,并负责对私有属性的赋值和取值 成员方法也有静态和非静态之分,分别被称
3、为类方法和实例方法,4.2.3 成员方法,实例方法的声明 语法: Modifiers ResultType methodName(parameterList) MethodBody 例如: public int getAge() . public void eat(String food) . ,4.2.3 成员方法,返回值 返回类型是void以外的其它类型要求此方法必须有返回值 有返回值的方法,结束方法体的最后一条可执行语句必须是return 例如: private int age; public int getAge() return age; ,4.2.3 成员方法,成员方法的重载 同一
4、个类中允许有多个同名但参数列表各不相同的方法,即成员方法的重载 所谓参数列表各不相同,是指参数类型、个数和顺序至少有一项不同 JVM将根据参数的差异调用相应的方法 注意,重载对于方法的访问修饰符、返回类型没有相同或不同的要求,4.2.3 成员方法,局部变量 成员方法中可以声明局部变量,还可以在方法的任何一个程序块中声明变量 局部变量的作用域仅限于声明它的方法或程序块 方法声明中的参数也是只属于方法的局部变量 注意:局部变量在使用前必须由程序显式赋初值,否则编译程序会报错,4.3 对象,4.3.1 对象的声明和创建 4.3.2 对象的使用,4.3.1 对象的声明和创建,对象的声明 语法: Mod
5、ifiers ClassName objectName, . ; 例如: private String name; Person p1, p2; 声明对象仅声明了对象的引用,此时对象为null,因此还不能被使用,4.3.1 对象的声明和创建,构造方法 用于创建对象,是一种特殊的成员方法 通常,它的主要工作是初始化成员变量 语法: Modifiers ClassName(parameterList) MethodBody ,4.3.1 对象的声明和创建,默认的构造方法 没有参数列表的构造方法是默认的构造方法 类定义中,如果用户没有声明构造方法,Java将自动生成一个仅有一条语句“super();
6、”的默认构造方法,表示将调用父类的默认构造方法 这条语句也将是所有构造方法的第一条语句,只要这些构造方法中没有对父类构造方法的调用,4.3.1 对象的声明和创建,构造方法的重载 例如: public class Person public Person() public Person(String n, int a) name = n; age = a; . ,4.3.1 对象的声明和创建,对象的创建 声明对象之后,还必须用new运算符创建对象,即为之分配存储空间。 语法: new ClassName(parameterList),4.3.1 对象的声明和创建,new运算符 首先为对象分配存储
7、空间,再按照类声明的次序依次执行所有成员变量的初始化语句和初始化块,之后调用构造方法初始化实例变量,最终返回对象的引用,4.3.1 对象的声明和创建,this关键字 关键字this表示当前对象的引用,通常用来区分同名的实例变量和局部变量,例如: this.name = name; this.age = age; 构造方法中也可以用this()来调用其它的构造方法,例如: public Person() this(“, 0); ,4.3.1 对象的声明和创建,初始化块 类定义中,还可以有多个的初始化块 在创建类的对象时,初始化块将先于构造方法被执行 初始化块由一对大括号括起来,可以包含多条语句,
8、一般用来对成员变量初始化,4.3.2 对象的使用,引用对象 引用对象的成员变量和调用对象的成员方法使用“.”运算符,格式是: objectName.memberVariableName objectName.memberMethodName(parameterList) 例如: System.out.println(“我是“+ p1.name + “, 今年“ + p1.age + “岁“);,4.3.2 对象的使用,传递参数 按值传递:将实际参数的值传递给方法中对应的形式参数 按引用传递:将实际参数的引用地址传递给方法中对应的形式参数 由于实际参数和形式参数的地址相同,方法执行时对形式参数的
9、操作实际上就是对实际参数的操作,形式参数值的改变会影响实际参数的值,4.4 类的封装,4.4.1 访问控制属性 4.4.2 设置类的访问控制属性 4.4.3 设置类成员的访问控制属性,4.4.1 访问控制属性,4.4.2 设置类的访问控制属性,对于外部类来说,访问控制属性只能是默认和public的,不能是private和protected的 private和protected访问属性只能使用在内部类上,4.4.2 设置类的访问控制属性,如果将若干个类定义放在同一个java文件中,使用public修饰符的类最多只能有一个 如果文件中有public类,文件必须与此类同名,4.4.3 设置类成员的访
10、问控制属性,类的成员变量和成员方法的访问控制属性可以有四种:默认、public、private和protected 在设计类时,基于封装的要求,通常对支持类自身运行的成员声明为private,仅把作为其他对象访问自己的接口的方法根据需要声明为默认、public或protected,一般是public,4.5 静态成员,4.5.1 静态变量 4.5.2 静态方法,4.5.1 静态变量,静态变量是声明时使用了static修饰符的变量,例如: private static int total; 系统仅在加载类时创建一份静态变量副本,该副本将被此类的所有对象共享 静态变量与类有关而与对象无关,这也是静
11、态变量被称为类变量的原因,4.5.1 静态变量,引用静态变量使用类名和对象名都可以 【例4-2】静态变量的应用 PersonStatic.java,4.5.1 静态变量,静态初始化块 可以使用在类加载时即被执行的静态初始化块为静态变量提供初值 语法: static / 初始化静态变量语句 注意,静态初始化块只能初始化静态变量,4.5.2 静态方法,静态方法是使用static修饰的方法,方法中只能访问局部变量和静态变量、调用静态方法,不能直接引用实例成员 语法: Modifiers static ResultType methodName(parameterList) MethodBody ,4
12、.5.2 静态方法,静态方法可以通过对象名和类名来调用 如果想在静态方法中访问实例成员,必须先创建对象,然后通过对象名引用 静态方法常用来为应用中的其它类提供实用工具 Java类库中大量的静态方法正是因此而定义的,例如Math类中的sin()、cos()和random()等方法,4.6 包和实用类,4.6.1 包 4.6.2 Java标准包 4.6.3 实用类,4.6.1 包,Java提供了包机制来组织类,将所有的类按一定的原则分别放置在不同的包中,同一个包中不允许有同名的类 包就是目录,包中还可以有包,称为子包,即子目录 创建包意味着在文件系统下创建与包同名的目录,4.6.1 包,声明包:
13、package packageName.packageName1.packageName2.;,4.6.1 包,导入包: import packageName.packageName1.packageName2.ClassName|*; 包限定: packageName.packageName1.packageName2.ClassName,4.6.1 包,注意:如果一个类属于默认包,那么它只能被同在默认包中的类引用,而无法被其它包中的类引用 因此应尽量避免使用默认包,4.6.2 Java标准包,4.6.3 实用类,基本数据类型包装类,4.6.3 实用类,数学Math类 static doub
14、le E,自然对数的底数e static double PI,圆的周长与直径之比,4.6.3 实用类,4.6.3 实用类,【例4-3】比较两个随机数的大小 Comparisons.java,4.7 应用实例,4.7.1 点和矩形的抽象 4.7.2 通讯录项 4.7.3 剪刀石头布游戏,4.7.1 点和矩形的抽象,【例4-4】点和矩形的抽象 Point.java,Rectangle.java,RectangleTest.java,4.7.2 通讯录项,【例4-5】通讯录项 User.java,PhoneNumber.java,BookEntry.java,BookEntryTest.java,4.7.2 通讯录项,4.7.3 剪刀石头布游戏,【例4-6】剪刀石头布游戏 Player.java,Judge.java,Game.java,