08对象和类_1.ppt_第1页
08对象和类_1.ppt_第2页
08对象和类_1.ppt_第3页
08对象和类_1.ppt_第4页
08对象和类_1.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,学习目标,理解类和对象 学习如何定义类和创建类的对象 使用引用变量来访问对象 在用构造方法创建对象时,理解构造方法的作用 区分引用变量和基本数据类型变量,2,什么是对象,对象代表现实世界中可以明确标识的一个实体 所有对象都有两方面的特性 状态(state) : 在程序中用变量来描述 行为(behavior):用方法来实现,3,创建类,成员变量,构造方法,方法,4,构造方法,class Circle double radius = 1; Circle() Circle(double newRadius) radius = newRadius; / ,构造方法(constructor)是一类特

2、殊的方法,用来初始化对象 构造方法名称和类名相同 构造方法没有返回类型,连void也没有 构造方法在创建对象时用new关键字调用,作用初始化新对象,5,问题,每个类都必须显式地声明构造方法吗? 如果一个类中没有声明构造方法,这个类是不是就没有构造方法?,6,构造方法,类可以不声明构造方法,在这种情况下,类中隐含地声明了一个方法体为空的无参构造方法,这个构造方法称为默认构造方法(default constructor) 只有当类中没有明确声明构造方法时,默认构造方法才会自动生成。,class Welcome public static void main(String args) System.

3、out.println(“welcome to Java!”); ,7,创建对象,public class Circle double radius = 1.0; Circle() Circle(double newRadius) radius = newRadius; double getArea() return radius * radius *3.14; ,public class Test public static void main( String args) Circle c1 = new Circle(); Circle c2 = new Circle(5.0); (1) n

4、ew关键字调用构造方法来创建对象, 并初始化新对象 (2) new关键字用来创建对象,并为对象 分配空间,成员变量赋初值 (3) 调用构造方法为新对象初始化 (4) 创建出的对象可以赋值给同类型的变量(对象的引用),8,例1,public class Point public int x ;/横坐标 public int y ;/纵坐标 public Point(int a, int b) x = a; y = b; public void move(int a,int b) x = a; y = b; 创建Point对象p1,其x坐标为2,y坐标为3 创建Point对象p2,其x坐标为5,y

5、坐标为-1,9,例2,class Test int add(int a,int b) return a + b; ,如何创建一个Test对象?,10,访问对象,访问对象的成员变量 对象的引用.成员变量名 调用对象的方法 对象的引用.方法名(实参),11,访问对象,class Test public static void main() Circle c1 = new Circle();/使用无参的构造方法创建圆c1 c1.radius = 10;/将c1的半径修改为10 double area = c1.getArea();/调用c1的getArea方法计算c1的面积 System.out.p

6、rintln(“c1的半径是:” + c1.radius + “,c1的面积是:” + area); Circle c2 = new Circle(5.5);/使用构造方法创建圆c2,半径为5.5 System.out.println(“c2的半径是:” + c2.radius + “,c2的面积是:” + c2.getArea(); ,12,注意,(1) 为什么Math类不用创建对象,就可以访问它的成员变量PI和方法random? Math.random(); Math.PI (2) 可以用Circle.getArea() 来计算圆的面积吗? (3) 可以用Circle.radius = 1

7、0;来访问圆的半径吗?,13,创建学生类Student 包含两个成员变量:id、name,均为String类型 一个构造方法:两个参数,分别为学号和姓名赋指定的初值 两个方法 String getName() return name; / 返回学生姓名 void setName(String name) = name ; /设置学生姓名 创建测试类TestStudent,包含main函数,main函数内测试下面内容 创建学生对象s1,姓名、学号自定 输出s1的姓名(使用getName方法) 修改s1的姓名为张三(使用setName方法) 输出s1的新名字,14,class

8、Circle double radius; Circle(double newRadius) radius = newRadius; class TestCircle public static void main(String args) Circle c1 = new Circle(); c1.radius = -5; /这样的赋值有意义吗? Circle c2 = new Circle(-3);/创建这样的圆有意义吗? ,15,class Circle private double radius; public Circle(double newRadius) if(newRadius

9、= 0) radius = newRadius; public double getRadius() return radius; public void setRadius(double newRadius) if(newRadius = 0) radius = newRadius; ,public class Test() public static void main(String args) Circle c1 = new Circle(5); c1.setRadius(7); double r = c1.getRadius(); ,16,构造方法的作用,class Cat Strin

10、g name = “小白”; String color = “white”; char sex = f; String type = “¥”; Cat c1 = new Cat(); Cat c2 = new Cat();,17,构造方法的作用,class Cat String name; String color; char sex; String type; Cat(String n, String c, char s, String t) name = n; color = c; sex = s; type = t; Cat c1 = new Cat(“花花”,”brown”,f,”$%

11、$”); Cat c2 = new Cat(“小黑”,”black”,f,”#”);,18,class Circle double radius; double getArea() return Math.PI * radius * radius; ,class Test public static void main(String args) Circle c1 = new Circle(); System.out.print(c1.radius); System.out.print(c1.getArea(); ,19,成员变量的默认值,成员变量会自动赋初值: 数字型的成员变量初始值为0 b

12、oolean类型的成员变量初始值为false char类型的成员变量初始值为u0000 引用类型的成员变量的初始值为null,20,Example,public class Test public static void main(String args) int x; String y; System.out.println(“x is ” + x); System.out.println(y is + y); ,局部变量是没有默认值的! !,21,基础数据类型变量和引用变量,基础数据类型变量存放的是数据值 int i = 10; char c = a; double d = 12.5; 引

13、用变量包含对象或者数组的引用地址 Circle c = new Circle(5.0); int intArray = 1,2,3,4,5; 当一个引用变量没有指向任何一个对象或数组时, 它的值是null,22,变量的赋值,int i = 2; int j = i; Circle c1 = new Circle(); Circle c2 = new Circle(); c2 = c1;,j,2,23,public class TestPassObject public static void main(String args) Circle myCircle = new Circle(1);

14、int n = 5; printAreas(myCircle, n); System.out.println(myCircle.getRadius(); System.out.println(n is + n); static void printAreas(Circle c,int times) while (times = 1) c.setRadius(c.getRadius() + 1); times-; ,24,垃圾回收,如果一个对象没有任何引用指向它,该对象就 成为无用对象,可以被垃圾回收 Java虚拟机会自动回收无用对象,释放空间 如果一个对象不再使用,可以为其赋值为null 例:

15、 Circle c = new Circle(25); c = null;,25,下面的代码执行完后,一共创建了几个对象? 多少个对象成为无用对象? 1、Circle c1 = new Circle(5.5); 2、Circle c2 = new Circle(); 3、new Circle(2.5); 4、c1 = c2; 5、c1 = null;,26,public class Point int x ; int y ; public Point(int a, int b) x = a; y = b; public void move(int a,int b) x = a; y = b; ,public class Rectangle int width ; int height; Point origin; public Rectangle(Point p, int w, int h) origin = p; width = w; height = h; public

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论