第06章 对象和类.ppt
《第06章 对象和类.ppt》由会员分享,可在线阅读,更多相关《第06章 对象和类.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章 对象和类学习目标l理解对象和类,用类建立对象模型l学习如何定义类和创建类的对象l理解构造方法的作用,并使用构造方法创建类的对象l使用UML图形符号来描述类和对象l区分对象引用变量和基本数据类型变量l使用Java类库中的类l类的封装、永久类、永久对象、对象参数l类的静态成员、变量的作用域lthis、对象数组l类的抽象、内部类2面向对象技术面向对象技术6.1 引言面向过程程序设计中,数据与对数据的操作是分离分离的。数据结构 ACBf(1)f(2)f(3)f(4)DBMS3面向对象技术面向对象技术6.1 引言面向对象程序设计把数据和属于它们的操作放入称为“对象对象”的整体的整体中。F(1)F
2、(2)对象方法数据4面向对象技术面向对象技术6.2 对象和类l对象的状态(State)由具有当前值的数据域(data field)的集合组成.l对象的行为(Behavior)是方法(method)的集合定义的.对象对象(Object)代表现实世界中可以明确标识的一个整体.数据域1数据域m方法1方法n(a)一般对象状态(属性)行为radius=5findArea()(b)圆对象的例子状态(属性)行为5面向对象技术面向对象技术6.2 对象和类类类(class)是定义同一类型对象的结构.l类的数据描述属性.l类的方法定义行为.l构造方法,调用它创建类的对象.class Circle /*The ra
3、dius of the circle*/double radius=1.0;/*Construct a circle object*/Circle()/*Construct a circle object*/Circle(double newRadius)radius=newRadius;/*Return the area of this circle*/double findArea()return Math.PI*radius*radius;数据域构造方法方法注意:该类没有main方法,不能直接运行,仅用于声明和创建Circle对象.6面向对象技术面向对象技术6.3 使用构造方法创建对象l
4、构造方法是一种特殊方法,与一般方法有3点不同:构造方法必须与所在的类有相同的名字.构造方法必须没有返回类型,甚至连void也没有.构造方法的调用是在创建一个对象时使用new操作符进行的.构造方法的作用是初始化对象.l一个类可以有多个构造方法,通过方法重载实现.l当类中没有明确声明构造方法时,隐含声明一个方法体为空的无参构造方法,称为“默认构造方法”.l构造方法的调用语法:new 构造方法名构造方法名(参数参数);7面向对象技术面向对象技术6.3 使用构造方法创建对象创建Circle对象的例子:new Circle();/创建一个半径为创建一个半径为1.0的圆对象的圆对象new Circle(5
5、.0);/创建一个半径为创建一个半径为5.0的圆对象的圆对象Circleradius:doublefindArea():doubleCircle1:Circleradius=1.0Circlen:Circleradius=5.0new Circle()new Circle(5.0)类的UML符号对象的UML符号8面向对象技术面向对象技术6.4 通过引用变量来访问对象int xint yvoid setPoint()void showPoint()为Point类创建一个对象新创建的对象在内存中占用一定的空间.如何访问对象呢?9面向对象技术面向对象技术6.4.1 引用变量和引用类型引用变量用来访问
6、对象,该变量存储对象的引用地址.引用变量的初始值为NULL.声明引用变量引用变量(reference variable)的语法:类名 对象引用变量名;引用类型引用类型(reference type)是由类定义的类型.任何类型为类的变量都能引用该类的一个实例.例如:Circle myCircle;/声明一个Circle类型的引用变量 myCircle=new Circle();/该变量引用一个新建对象10面向对象技术面向对象技术6.4.1 引用变量和引用类型引用变量与其引用的对象的关系.Point aPoint=new Point(1.0,1.0);int xint yvoid setPoint
7、()void showPoint()0FF1DC080FF1DC08引用变量aPointPoint对象11面向对象技术面向对象技术6.4.2 访问对象的数据和方法lobjectRefVar.data -访问对象的数据lobjectRefVar.method-访问对象的方法使用成员运算符“.”访问对象的数据和方法:例如:Circle myCircle=new Circle(6.0);myCircle.radius -引用myCircle的半径 myCircle.findArea()-调用myCircle的方法注意:radius称为“实例变量”;findArea()称为“实例方法”.实例变量(方法
8、)依赖于类的一个具体实例,只能通过对象引用访问.12面向对象技术面向对象技术6.4.2 访问对象的数据和方法匿名对象匿名对象是指创建一个对象后,并不把它明确地赋给一个引用变量.例如例如:new Circle();System.out.println(“Area is“+new Circle().findArea();演示程序清单6-1:ExampleCH06TestSimpleCircle.java13面向对象技术面向对象技术6.4.3 空值nulll引用型 nulll数组型 0lboolean型 falselchar型 u0000如果一个引用型变量没有引用任何对象没有引用任何对象,其值为nu
9、ll.null是用于引用型变量的直接量.各数据类型变量的默认值:注意:Java没有给方法的局部变量赋予默认值。14面向对象技术面向对象技术6.4.3 空值nullclass Student String name;/默认值默认值null int age;/默认值默认值0;boolean isScienceMajor;/默认值默认值false char gender;/默认值默认值u0000 public static void main(String args)Student student=new Student();System.out.println(name?+student.name
10、);System.out.println(age?+student.age);System.out.println(isScienceMajor?“+student.isScienceMajor);System.out.println(gender?+student.gender);15面向对象技术面向对象技术6.4.3 空值nullclass Test public static void main(String args)int x;/无默认值 String y;/无默认值 System.out.println(x is +x);System.out.println(y is +y);编译
11、错误!错误信息:可能尚未初始化变量16面向对象技术面向对象技术6.4.4 基本数据类型变量与引用类型变量的区别l基本数据类型变量:直接存储值l引用类型变量:存储其引用的对象的存储地址基本数据类型 int i=1;引用类型 Circle c=new Circle();1i引用引用cc:Circleradius=1每个变量代表一个存储值的内存单元:17面向对象技术面向对象技术6.4.4 基本数据类型变量与引用类型变量的区别1222iijj基本数据类型赋值i=j赋值前赋值后引用类型赋值c1=c2c1c1c2c2赋值前赋值后c1:Circleradius=5c2:Circleradius=918面向对
12、象技术面向对象技术6.5 使用Java类库中的类import javax.swing.JFrame;public class TestFrame public static void main(String args)JFrame frame1=new JFrame();frame1.setTitle(Window 1);frame1.setSize(200,150);frame1.setLocation(200,100);frame1.setVisible(true);JFrame frame2=new JFrame();frame2.setTitle(Window 2);frame2.se
13、tSize(200,150);frame2.setLocation(410,100);frame2.setVisible(true);程序清单62导入要使用的类创建引用变量及对象直接使用系统类库的类:java.util.Date date=new java.util.Date();System.out.println(date.toString();19面向对象技术面向对象技术6.6 可见性修饰符lpublic,使类、方法和数据域可以在任何类中访问。lprivate,使方法和数据域只能从它所在的类中访问。l默认情况下(即无修饰符),类、方法和数据域可以从同一包的任何类中访问.Java提供可见性
14、修饰符用于控制对数据、方法和类数据、方法和类的访问.本节介绍其中的三个:20面向对象技术面向对象技术6.6 可见性修饰符public class C1 public int x;int y;private int z;public void m1()void m2()private void m3()public class C2 C1 o=new C1();可以访问 o.x 可以访问 o.y 不能访问 o.z 可以调用 o.m1()可以调用 o.m2()不能调用 o.m3()public class C3 C1 o=new C1();可以访问 o.x 可以访问 o.y 不能访问 o.z 可以
15、调用 o.m1()可以调用 o.m2()不能调用 o.m3()包p1;包p2;可见性修饰符对类成员类成员的作用21面向对象技术面向对象技术6.6 可见性修饰符class C1 public class C2 可以访问 C1 public class C3 不能访问C1 包p1;包p2;可见性修饰符对类类的作用22面向对象技术面向对象技术6.6 可见性修饰符说明:一个对象不能访问自己类中的私有成员,除非该对象是在自己类的内部声明的.public class Foo private boolean x;private int convert(boolean b)return x?1:-1;publ
16、ic static void main(String args)Foo foo=new Foo();System.out.println(foo.x);System.out.println(foo.convert(foo.x);public class Test public static void main(String args)Foo foo=new Foo();System.out.println(foo.x);System.out.println(foo.convert(foo.x);对象foo在类Foo内部声明因此这些访问是允许的对象foo在类Foo外部声明因此这些访问是错误的23
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第06章 对象和类 06 对象
限制150内