版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第4章 类和对象,2,1 面向对象程序设计方法,封装是把数据及处理数据的行为结合起来,不被外界干扰滥用的程序设计机制 多态是使用一个接口访问一组行为的特性,执行哪个行为由具体情况而定 继承是指一个类获得另一个类的属性或方法,3,2 定义类,定义只含有成员变量的类格式如下: class 类名 数据类型1 变量名1; 数据类型2 变量名2; class是关键字 类名必须是合法的标识符 习惯上类名的首字母应该大写,如果类名由多个单词组成,每个单词的首字母均要大写,其余字母为小写,4,2 定义类,例4-1 定义一个描述汽车的类,类中只含有成员变量 /Vehicle1.java public cla
2、ss Vehicle1 int passengers; double weight; String color; 编译后生成Vehicle1.class,但不能单独运行,5,2 定义类,课堂练习 定义一个类表示水果,成员变量有: 水果名称 重量,6,3 创建对象,创建类Vehicle1的对象: new Vehicle1( ); 对象创建后系统为对象分配内存,保存对象的成员变量值 Vehicle1( )是系统自动生成的构造方法 对象通过引用变量访问,声明引用变量的格式: 类名 引用变量名; 例如:Vehicle1 v; 声明引用变量和创建对象也可以写成: Vehicle1 v = new Veh
3、icle1( ) ;,7,3 创建对象,引用变量访问对象的成员变量格式: 引用变量名.成员变量名 例如: v. passengers = 5; System.out.println(v.color);,8,3 创建对象,例4-2 创建并引用对象 public class Example4_2 public static void main(String args) Vehicle1 v1 = new Vehicle1(); /创建对象 v1.passengers = 10; /对成员变量赋值 v1.weight = 55.8; v1.color = RED; System.out.printl
4、n(v1的passengers:+v1.passengers); System.out.println(v1的weight:+v1.weight); System.out.println(v1的color:+v1.color); ,9,3 创建对象,课堂练习 创建并引用水果类的对象,10,4 定义方法和调用方法,定义成员方法的格式如下: 返回值类型 方法名(形式参数列表) / 方法体 形式参数列表可以是空的,方法体也可以是空的 返回值类型、方法名、一对( )、一对 是定义成员方法的四要素,缺一不可,11,4 定义方法和调用方法,返回值类型指定调用方法后返回的数据类型。如果方法不返回值,用voi
5、d 方法名必须是合法的标识符,习惯上方法名用小写字母 形式参数列表中的每个参数用数据类型和变量名表示,如果有多个参数,每个参数之间用逗号隔开 如果方法有返回值,方法体的最后一行代码必须是下列形式的语句: return 表达式;,12,4 定义方法和调用方法,例4-3 定义一个描述汽车的类,除了成员变量passengers、weight、color外,还要定义对这些成员变量赋值并获取成员变量值的方法,13,4 定义方法和调用方法,课堂练习 定义一个类表示水果 ,成员变量有水果名称和重量,成员方法有水果名称和重量的setter和getter方法,14,4 定义方法和调用方法,调用成员方法格式为:
6、引用变量名.方法名(实在参数列表) 实在参数列表中的参数个数、数据类型、排列顺序必须与方法定义中形式参数列表中的参数个数、数据类型、排列顺序一致。 每个实在参数必须是已经赋值的变量或字面值,如果有多个实参,参数之间用逗号分隔。 方法调用格式中的引用变量名、方法名、实在参数列表是一个不可分割的整体,15,4 定义方法和调用方法,public class Example4_4 public static void main(String args) Vehicle2 v = new Vehicle2(); v.setPassengers(5); v.setWeight(88.9); v.setCo
7、lor(GREEN); int i = v.getPassengers(); System.out.println(i); System.out.println(v.getWeight(); System.out.println(v.getColor(); v.setVariables(44, 230.88, WHITE); v.outputVariables(); ,16,4 定义方法和调用方法,成员方法的定义中,方法体内的代码中可以出现下列变量: 类的成员变量,即域变量。 形式参数列表中的变量,称为参变量。 方法内部声明的变量,称为局部变量。,17,4 定义方法和调用方法,成员变量在类中定
8、义,可以被同一个类的所有成员方法访问。 参变量的作用域是这个变量所在的方法,在这个方法外,参变量不可见。 局部变量的作用域是定义局部变量的语句块,语句块外,局部变量不可见,18,4 定义方法和调用方法,例4-5 定义一个类,成员变量是一个整型数组的引用变量,三个成员方法分别设置成员变量值、返回成员变量值、计算并返回成员变量数组中的元素之和,19,5 定义构造方法,构造方法是专门用于创建对象的方法,通常执行对成员变量赋值等初始化操作 定义构造方法的格式为: 类名(形式参数列表) / 方法体 构造方法的方法名必须与类名一致,没有返回值,也不能有void,20,5 定义构造方法,例4-7 定义一个描
9、述汽车的类,除了成员变量passengers、weight、color外,还要定义对这些成员变量赋值的构造方法,并创建对象,21,6 方法的重载,方法名以及形式参数的数量、类型、和排列顺序合在一起称为方法的签名 Java编译器根据方法签名区分不同的方法。这就是说,同一个类中的方法,只要方法签名不同就是不同的方法 除了成员方法重载外,构造方法也可以重载,22,6 方法的重载,例4-8 定义一个描述汽车的类,除了成员变量passengers、weight、color外,还要定义重载的构造方法以及对不同成员变量赋值的重载的成员方法,23,7 this关键字,方法体中访问成员变量或成员方法是通过thi
10、s引用访问的 this可以省略 当方法的形式参数中有与成员变量同名的参变量时,必须通过this才能访问成员变量,24,7 this关键字,class Vehicle int passengers; double weight; String color; void setData(int passengers,double weight,String color) this.passengers = passengers; this.weight = weight; this.color = color; ,25,8 static修饰符,使用static修饰的成员变量称为类变量或静态变量,没有
11、使用static修饰的成员变量称为实例变量 使用static修饰的成员方法称为类方法或静态方法,没有使用static修饰的成员方法称为实例方法,26,8 static修饰符,声明类变量格式如下: static 数据类型 成员变量 ; 例如: static int count; static final double PI = 3.14 ; /声明类常量,27,8 static修饰符,对于实例变量,创建对象时,每个对象都会分配到内存单独保存自己的实例变量。 对于类变量,所有的对象共享同一个内存区域,即所有对象的类变量的值是一致的 访问类变量时,既可以通过类名进行访问,也可以通过对象进行访问。但是
12、,访问实例变量时,只能通过对象进行访问,28,8 static修饰符,例4-9 定义一个表示汽车的类,成员变量有类变量passengers和实例变量weight,29,8 static修饰符,定义类方法格式如下: static 返回值类型 方法名(参数列表) /方法体 ,30,8 static修饰符,调用类方法时,可以由类名直接调用,也可以创建对象后由对象的引用变量调用,而实例方法只能通过引用变量调用,不能由类名直接调用。 类方法中只能访问类变量、调用类方法,而实例方法中既可以访问实例变量和实例方法,也可以访问类变量和类方法。 类方法中不能使用this关键字,而实例方法中可以使用this引用当
13、前对象,31,8 static修饰符,例4-10 定义一个计算圆面积的类方法,32,9 包,Java使用包来组织类,用包存放一组相关的类 包可以避免类的命名冲突 包还参与了Java的访问控制机制,包在类的外层定义了另一种封装的实现形式,33,9 包,可以在类定义的顶部使用package语句指定类所属的包。package语句的格式为: package 包名; 例如: package pack1; package a.b.c; 如果定义类的时候没有指定包,就放置在默认包中,34,9 包,访问其它包中的类 方法1:在每个类名前添加完整的包名 。例如: java.util.Date today = n
14、ew java.util.Date( ); 方法2:使用import语句。例如: import java.util.Date; /导入Date类 import java.util.*; /导入java.util包中所有类,35,9 包,例4-11 定义一个表示书本的类Book,包含在名为pack1的包中。在默认包中定义类Example4_11,访问类Book,36,10 访问权限,定义类时,可以不使用权限修饰符,也可以用public将类设置成公有的 。例如: public class Book1 /类的成员 class Book2 /类的成员 ,37,10 访问权限,使用public修饰的公有
15、类对所有类都是可见的,既可以被同一个包中的类访问,也可以被其它包中的类访问。 不用public修饰符的类仅仅在包内具有可见性,即只能被同一个包中的类访问,不能被其它包中的类访问,38,10 访问权限,Java有三个访问权限修饰符,分别为public、protected和private,这三个关键字均可用于修饰类的成员 用public修饰的成员对所有类都可见,无修饰符的成员仅仅在包内具有可见性,39,10 访问权限,例4-12 定义一个表示书本的类Book1,所有成员无权限修饰符,包含在名为pack2的包中。在pack2包中另定义类Example4_12,访问类Book。然后将Example4_12放到默认包中,观察出现的错误 并改正,40,10 访问权限,private修饰的成员只能被同一个类的成员方法访问,在其它类中访问private修饰的成员将出现错误 例4-13 定义一个表示书本的类Book1,成员变量用private修饰,成员方法无修饰符,41,10 访问权限,public、protected和private形成了四种访问权限 private将成员封装在类的内部,只有在类的内部可见性 无修饰符的默认权限是将成员封装在包的内部,即只
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论