JAVA语言程序设计:第三章面向对象程序设计-类和对象的定义_第1页
JAVA语言程序设计:第三章面向对象程序设计-类和对象的定义_第2页
JAVA语言程序设计:第三章面向对象程序设计-类和对象的定义_第3页
JAVA语言程序设计:第三章面向对象程序设计-类和对象的定义_第4页
JAVA语言程序设计:第三章面向对象程序设计-类和对象的定义_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章面向对象程序设计-类和对象的定义对象的概念;类的概念;如何定义类,创建对象;对象的创建过程-构造方法对象的生命周期What? 什么是对象? 什么是类?一、对象的概念具体事物:特征: 体重,身高,性别,年龄行为: 吃饭,睡觉,走路,说话一、对象的概念特征:内容,书名,作者,页数,是否能借到用途:陶冶情操,丰富视野一、对象的概念结论对象是指具体的事物,具有静态的特征和动态的行为或用途。Java语言中,静态的特征称为属性,动态的行为或用途称为方法新的问题平时我们谈话的风格:吃饭:服务员给我们拿瓶啤酒!上班:我骑自行车来的/我开车来的!用具体事物的一般特征来代替具体事物是人类描述世界的天性 二、

2、类类:对具体事物的一般特征进行的抽象描述。换句话说,类是具有相同属性和行为的一组对象的集合类也有属性和行为抽象性思维是人的天性: 二、类 类是概念模型, 定义对象的所 有特性和所需 的操作对象是真实的模型类和对象类定义实体对象是实际的实体类是对象的原型所有属于同一个类的对象都具有相同的特性和操作类和对象的区别 二、类区分类和对象人学号为31113101的学生啤酒纪乐平的汽车新的问题对于同一类事物,我们都会得出相同的属性?学会从不同的角度思考问题根据系统的需要定义属性和方法。例:书从读者角度:页数作者书名价格从出版商角度:纸张质量开本废品回收站重量价格/多少钱一斤How? 如何定义类? 如何创建

3、类的具体实例对象?三、 定义类类的声明语法类的修饰字 class 类名称 extends 父类名称implements 接口名称列表 变量定义及初始化;方法定义及方法体;修饰符可以为 public | protected | private ,缺省方式为friendly 。三、 定义类1. 成员变量定义格式变量修饰字 变量数据类型 变量名1,变量名2=变量初值;变量修饰符可以为 public | protected | private static final transient volatile。成员变量的类型可以是Java中任意的数据类型,包括简单类型,类,接口,数组。在一个类中的成员变量

4、应该是唯一的。三、 定义类2. 成员方法定义格式方法修饰字 返回类型 方法名称(参数1,参数2,) throws exceptionList(statements;)/方法体:方法的内容三、 定义类不能为 Java 中的关键字不能包含空格或点号“.”可以下划线“_”、字母或“$”符号开头类名、属性名,方法名的命名规则:三、 定义类class Book String bookName; String authorName; int nopages; boolean available;从读者角度出发生成的代码属性三、 定义类class Book String bookName; String a

5、uthorName; int nopages; boolean available; void isAvailable() if(available = true) System.out.println(有这本书); .方法三、 定义类【例1】 编程创建一个Box类,在其中定义3个变量表示一个立方体的长、宽和高;定义一个方法求立方体的体积;定义一个方法求立方体的表面积。三、 定义类public class Box double length;double width;double height;public double getV()return length*width*height;pub

6、lic double getArea()return 2*(length*width+length*height+width*height);四、创建对象Book hongLou = new Book();/创建红楼对象对象中的属性和方法可使用圆点符号来访问对象在圆点左边,而属性或方法在圆点右边例如: hongLou.bookName = “红楼梦”; hongLou.authorName = “曹雪芹”; hongLou.isAvailable();四、创建对象例1的测试方法public static void main(String args)Box box1=new Box();box1

7、.length=200;box1.width=200;box1.height=200;System.out.println(第1个箱子的体积为:+box1.getV()+,表面积为:+box1.getArea();Box box2=new Box();box2.length=100;box2.width=100;box2.height=100;System.out.println(第2个箱子的体积为:+box1.getV()+,表面积为:+box1.getArea();随堂练习属性姓名年龄职业方法显示信息走路吃饭 Human类How?对象的创建过程-构造方法?五、构造方法Box box1 =

8、new Box();new调用构造方法,创建一个类的实例(对象)通过使用new关键字为对象分配内存,初始化实例变量,并调用构造方法。那么Box()是什么意思呢?这个Box()就是一个特殊的方法叫构造方法。那为什么在程序中没有看到这个方法的定义呢,那是因为在没有定义构造方法的时候,系统会自已创建一个默认的构造方法。 构造方法(Constructor)是一种特殊的方法。Java中的每个类都有构造方法,用来初始化该类的一个新的对象。 构造方法具有和类名相同的名称, 没有返回任何数据类型的返回值, 系统在产生对象时会自动执行。(通过new调用) 五、构造方法 五、构造方法编程实例观察构造方法被自动调用

9、在类中加这样的一个方法public Box()System.out.println(来到构造方法);运行结果为: 来到构造方法 第一个箱子的体积为:8000000.0,表面积为:240000.0 来到构造方法 第二个箱子的体积为:8000000.0,表面积为:240000.0通过运行的结果读者会发现,在main() 方法中并没有调用Box()方法,但它却被自动调用了,而且每创建一个Box对象,这个方法都会被自动调用一次,这就是“构造方法”。五、构造方法构造方法应包含的内容: 定义一些初始值或内存配置工作;如果程序中没有定义构造方法,则创建实例时使用的是缺省构造方法,它是一个无内容的空方法。这个

10、缺省构造方法将类中变量自动初始化为该类型的默认值。具体如下:五、构造方法构造方法的应用-对象初始化 整型初始化为0; 实型初始化为0.0f、0.0d; 逻辑型初始化为false; 字符型初始化为u0000; 类对象初始化为null,表明不指向任何内存地址的引用 五、构造方法两种构造方法参数化构造方法(自己定义的构造方法)隐式构造方法(系统自动产生的构造方法)一定要注意,类中没有定义并不表明就没有构造方法。一旦有了自己定义的构造方法,系统就不会自动产生。五、构造方法五、构造方法拓展类中定义的变量在对象被创建时被自动赋于初值;方法体中定义的变量都是局部变量,只能在方法体中使用,并且方法体中定义的变

11、量必须初始化赋值后才能使用。随堂编程属性姓名年龄职业方法构造方法显示信息走路吃饭 Human类总结 对象由状态和行为组成;类是具有相同属性和行为的一组对象的集合;类的变量和方法可被该类的实例访问;圆点符号用于访问对象的成员,属性和方法;构造方法在创建对象时初始化对象,分为显式和隐式两种情况。六、this,关键字this, 当前类的对象一般可以省略,但有了不容易混淆。class AString str1;public void setStr1(String srt1) this.str1=str1 七、对象的生命周期类定义:类定义之后,只是产生了对事物的描述,并没有生成事物的实例。对象创建:必须

12、对一个类进行实例化,来生成客观事物的内存映像,这就是对象的创建。需要内存空间保存。对象使用:对象被创建之后必定要显示它的一些特性和表现一些行为,这就是对象的使用。对象消亡:任何事情都有它的生存周期,因此当对象不再被使用的时候(即没有任何的引用变量指向它时),对象就变成了垃圾,这就是对象的消忘。七、对象的生命周期1. 垃圾回收的概念Java提供了一种叫做垃圾回收的机制来避免程序员忽略垃圾的处理,Java自动帮我们完成垃圾回收的工作,而不需程序员再考虑。在Java程序运行过程中,一个垃圾回收器会不定时地被唤起检查是否有不再被使用的对象,并释放它们占用的内存空间。垃圾回收器的启用不由程序员控制,也无

13、规律可循,并不会一产生了垃圾,它就被唤起,甚至有可能到程序终止,它都没有启动的机会。七、对象的生命周期Finalize方法 在对对象进行垃圾收集前,Java运行时系统会自动调用对象的finalize() 方法来释放系统资源。该方法必须按如下方式声明:protected void finalize() throws Throwable finalize()方法是在java.lang.Object中实现的,在用户自定义的类中,它可以被覆盖,但一般在最后要调用父类的finalize()方法来清除对象所使用的所有资源。protected void finalize() throws Throwable

14、 /释放本类中使用的资源 super.finalize();七、对象的生命周期System.gc的作用Java的垃圾回收器的执行的偶然性有时候也会给程序带来麻烦,如果在一个对象成为垃圾时需要马上释放,或者程序在某个时间内产生大量的垃圾时,希望能有一个人工干预的方法.Java里提供了一个System.gc方法,使用这个方法可以强制启动垃圾回收器回收垃圾.七、对象的生命周期例子:1、自动收集2、人工收集七、对象的生命周期public class Back public static void main(String args)for(int i=0;i10000;i+)new Student();

15、class StudentString name;int age;String address;protected void finalize() throws ThrowableSystem.out.print(调用finalize()方法);super.finalize();总结对象类类和对象的区别JAVA中类的定义和对象的创建构造方法对象生命周期八、方法方法的重载Java语言允许在一个类中定义几个同名的方法,只要这些方法具有不同的参数列表,即方法的参数类型不同,或方法参数的个数不同,或方法参数的次序不同。这种做法称为方法的重载。 当调用类中重载的方法时,Java能够根据方法参数的不同选择

16、正确的方法来调用。八、方法1. 成员方法的重载调用语句的自变量列表必须足够判明要调用的是哪个方法。重载方法的参数表必须不同。参数不同主要是参数类型、顺序和个数不同。八、方法八、方法重载方法的返回类型可以相同,也可以不同。但如果仅仅是返回类型不同,而方法名和形参表都相同,则是非法的。例:class Astatic int f(int a)return 1;static double f(int a)return 1.0;public static void main(String args)f(1);/无法判断调用哪个方法八、方法1)不同的参数个数;2)不同的参数类型;3)不同的参数次序;八、方

17、法2. 构造方法的重载当一个类因构造函数的重载而存在多个构造函数时,创建该类对象的语句会根据给出的实际参数的个数,参数的类型,参数的顺序自动调用相应的构造函数来完成新对象的初始化工作。当一个类有多个重载的构造函数时,它们之间可以相互调用,这种调用通过关键字this实现,同时this调用语句必须是构造函数中的第一个可执行语句。八、方法八、方法方法间参数的传递方式方法一般有参数;方法的调动需要传递参数,实参;在面向对象的程序设计里,实参是如何传递的呢?八、方法方法间参数的传递方式是值传递class PassValuepublic static void main(String args)int x

18、=5;change(x);System.out.println(x);public static void change(int x)X=3八、方法方法间参数的传递方式是值传递1、基本数据类型的参数传递方法的形式参数就相当于方法中定义的局部变量,方法调用结束时也就被释放了,不会影响到主程序中同名的局部变量。八、方法方法间参数的传递方式是值传递Calss PassRefint x;public static void main(String args)PassRet obj=new PassRef();obj.x=5;change(obj);System.out.println(obj.x);public static void change(PassRef obj)obj.x=3;八、方法方法间参数的传递方式是值传递2、引用数据类型的参数传递对象的引用变量并不是对象本身,它们只是对象的名柄(名称)。就好象一个人有多个名称一样(中文名,英文名),一个对象可以有多个句柄。八、方法方法间参数的传递方式是值传递main方法中的内存状况change方法中的内存状况ox3000堆内存 50 x3000obj?PassRet o

温馨提示

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

评论

0/150

提交评论