JAVA面向对象基础课件

PPT
  • 阅读 27 次
  • 下载 0 次
  • 页数 68 页
  • 大小 1.713 MB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
JAVA面向对象基础课件
可在后台配置第一页与第二页中间广告代码
JAVA面向对象基础课件
可在后台配置第二页与第三页中间广告代码
JAVA面向对象基础课件
可在后台配置第三页与第四页中间广告代码
JAVA面向对象基础课件
JAVA面向对象基础课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 68
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】JAVA面向对象基础课件.ppt,共(68)页,1.713 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44835.html

以下为本文档部分文字说明:

3Sept.2008©NeusoftConfidential第三章面向对象基础目标:介绍面向对象编程的基本思想,通过本课的学习,应该掌握如下知识:1)理解什么是类、对象、构造方法,2)对象在内存中的表现形式及如何使用对象等。3)Java的垃圾回收

机制及访问修饰符。本章要点•类和对象的关系面向对象的思想子类实例化的过程对象的创建•构造方法变量的初始化顺序•对象创建的内存模型垃圾回收机制•Java中的关键字this关键字static关键字主要内容类和对象的关系1构造方法2对象创建的内存

模型3Java中的关键字4类和对象的关系•面向对象的思想(ObjectOrientedProgramming,简称OOP)面向对象的基本思想是,从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可

能运用人类的自然思维方式面向对象更加强调运用人类在日常的思维逻辑中经常采用的思维方法与原则•面向对象的三个特征封装继承多态类和对象的关系•面向对象与面向过程publicclassIcebox{staticvoidputThings(Stringthings){Syste

m.out.println("把冰箱门打开");System.out.println("把"+things+"放进来");System.out.println("把冰箱门关上");}}voidOpenIcebox(){printf(“把冰箱门打开\n");}voidPut

ElephantI(){printf(“把大象放冰箱\n");}voidCloseIcebox(){printf(“把冰箱们关上\n");}intmain(){OpenIcebox();PutElephantIn();CloseIcebox();}publicclassMine{pu

blicstaticvoidmain(Stringargs[]){Icebox.putThings("大象");}}面向对象面向过程类和对象的关系•类的定义把相似的对象划归成一个类。在软件设计中,类,就是一个模板,它定义了通用于一个特定种类的所有对象的属性(变量)和行

为(方法)。类和对象的关系•类的定义?西游记游戏软件中的游戏人物孙悟空:孙悟空的武器是金箍棒,战斗力五颗星,耐力五颗星唐僧:唐僧没有武器,战斗力为零,耐力五颗星猪八戒:猪八戒的武器是耙子,战斗力四颗星,耐力两颗星沙僧:沙僧的武器是月

牙铲,战斗力三颗星,耐力四颗星类和对象的关系•类的定义修饰符一般为public,也可以没有修饰符。注意类名的命名规范。类名一般大写类的成员:成员变量(属性)成员函数(方法)通过“.‖调用属性和方

法[访问权限控制符]class类名{类的成员…}•类的完全声明形式[public][abstract|final]class类名称[extends父类名称][implements接口名称列表]{变量成员声明及初始化;方法声明及方法体

;}–变量声明格式[public|protected|private][static][final][transient][volatile]变量数据类型变量名1[=变量初值],变量名2[=变量初值],…;–格式说明•

public、protected、private为访问控制符•static指明这是一个静态成员变量•final指明变量的值不能被修改•transient指明变量是临时状态•volatile指明变量是一个共享变量类的方

法声明格式:[public|protected|private][static][final][abstract][native][synchronized]返回类型方法名([参数列表])[throwsexceptionLis

t]{方法体;}–格式说明•方法修饰–public、protected、private为存取控制符–static指明方法是一个类方法–final指明方法是一个终结方法–abstract指明方法是一个抽象方法–native用来集成java代码和其它语言的代码–synchronized

用来控制多个并发线程对共享数据的访问•方法调用–给对象发消息意味着调用对象的某个方法•从对象中取得信息•修改对象的状态或进行某种操作•进行计算及取得结果等–调用格式<对象名>.<方法名>([参数列表])称点操作符“.”前面的<对象名>为消息的接收者(receiver)–参数传递•值传递:参

数类型为基本数据类型时•引用传递:参数类型为对象类型或数组时访问修饰符该类或非该类均可访问public只有该类可以访问private相同数据包中的类可以访问default该类及其子类的成员可以访问,同一个包中的类也可访问protected访问修饰符•访问修饰符可

访问性位置private默认protectedpublic同一个类是是是是同一个包内的类否是是是不同包内的子类否否是是不同包并且不是子类否否否是类和对象的关系•类的定义Employee.javaclassEmployee{Stringname;intage;doublesalary;publicS

tringshowName(){System.out.println(name);returnname;}publicintshowAge(){System.out.println(age);returnage;}publicvoidu

pdateName(Stringname2){name=name2;}publicvoidgetSalary(){System.out.println("Thesalaryofthismonthis2000");}}

属性方法类和对象的关系•类的定义☻练习Person.java定义一个Person类,Person类具有名字、年龄及性别等属性,并具有一个getInfo()方法可以打印出Person类的属性,sayHello()方法和大家说“He

lloeverybody!”类和对象的关系•类的定义☻练习Point.java定义一个点类Point,包含两个成员变量x、y分别表示x和y的坐标,一个movePoint(intdx,intdy)方法实现点的位置的移动。public

classPoint{intx,y;voidmovePoint(intdx,intdy){x=dx;y=dy;}}类和对象的关系•类的定义☻练习MyDate.java定义一个点日期MyDate,包含三个成员

变量year、month、day分别表示年、月、日,以及每个属性对应的get和set方法(如,year有getYear()方法用来获得日期的年份,还有setYear(inty)方法用来修改或设置日期的年份),最后还有printDate()方法,调用该方

法可以把日期按照“yyyy-mm-dd‖的形式输出。类和对象的关系•类和对象的关系类(class)—是对某一类事物的描述对象(object)—是实际存在的某类事物的个体,也称为实例(instance)

类是创建对象的模板,对象是类的实例。类和对象的关系•对象的创建语法格式示例TestEmployee.java类名对象名=new构造函数Employeezhang=newEmployee()类和对象的关系•对象的创建☻练习TestPerson.java在TestPerson类

里写一个main方法,在main()方法中:创建一个Person类的对象这个对象的名字叫小沈阳,年龄28,性别男在控制台中打印这个实例的信息并调用这个对象的sayHello()方法,向大家问好类和对象的关系•对象的创建☻练习TestPoint.jav

a在TestPoint类里写一个main方法,在main()方法中:创建一个Point类的对象这个点的坐标是(3,2)将这个点移动到坐标为(5,6)的位置并把移动后的点的坐标按―(x,y)‖形式打印在控制台上类和对象的关系•对象的创

建☻练习TestDate.java在TestDate类里写一个main方法,在main()方法中:创建一个MyDate类的对象通过setXXX方法将该日期对象的时间设置为“2013年10月8日”在控制台上打印该对象的月份把该日期对象按“2013-10-8‖的格式输出类和对象的关系•匿名对

象创建完对象,在调用该对象的方法时,也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫匿名对象使用匿名对象的情况如果对一个对象只需要进行一次方法调用newPerson().sayHello()Personp1=newPers

on();p1.sayHello();Contents类和对象的关系1构造方法2对象创建的内存模型3Java中的关键字4构造方法•构造方法(构造函数/构造器,Constructor)具有与类相同的名称不含返回值类型不能在方法中用re

turn语句返回一个值一般访问权限为public在一个类中,具有上述特征的方法就是构造方法。•构造方法的作用完成对象的创建,即完成对象的实例化一般使用构造方法来完成对成员变量的初始化示例TestPerson.java构造方法•默认的构造方法在Java中,每个类都至少要有一个构造

方法,如果程序员没有在类里定义构造方法,系统会自动为这个类产生一个默认的构造方法一旦编程者为该类定义了构造方法,系统就不再提供默认的构造方法classEmployee{……publicEmployee(){}……}classEmployee{}构造方法☻练习下列关于类的定义

的选项中,哪些可以通过newThing()方法来创建该类的一个对象____?A.publicclassThing{B.publicclassThing{publicThing(){}}}C.publicclassThing{D.publicclassThing{

publicThing(void){}publicThing(Strings){}}}E.publicclassThing{publicvoidThing(){}publicThing(Strings){}}答案:A、B构造方法☻

练习给定下列代码的执行结果是____?publicclassA{voidA(){System.out.println(“ClassA”);}publicstaticvoidmain(String[]a

rgs){newA();}}A.ClassAB.在第2行处抛出异常C.编译错误D.在第6行处抛出异常E.代码执行后没有输出答案:E构造方法•类和对象的关系☻练习XiyoujiRole.java构造一个完整的西游记人物类,并定义一个构造方法,通过这个方法可以创建不同的西游记

人物,并写一个main函数进行验证。孙悟空:孙悟空的武器是金箍棒,战斗力五颗星,耐力五颗星唐僧:唐僧没有武器,战斗力为零,耐力五颗星猪八戒:猪八戒的武器是耙子,战斗力四颗星,耐力两颗星沙僧:沙僧的武器是月牙铲,战斗力三颗星,耐力四颗星方法的重载•方法的重载

(overload)函数的重载就是在同一个类中允许同时存在一个以上同名的函数•方法重载的规则函数名称相同函数的参数必须不同参数个数不同或参数类型不同函数的返回值类型可以相同,也可以不同方法的重载•方法的重载(overload)方法的重载☻练习下列选项中,哪些

可以与voidsetAge(intyear,intmonth,intday)方法在同一个类中定义____?A.publicvoidsetAge(){B.voidsetAge(intage){}}C.voidsetAge(inty,intm,intd){D.intsetAge(Dated){

}}E.intsetAge(intyear,intmonth,intday){}F.voidsetage(intyear,intmonth,intdat){}答案:ABDF方法的重载☻练习Person.java在上一个Person类的

基础上,完成以下功能:声明一个有参的构造方法,使得通过调用该构造方法可以对Person类的三个成员变量进行初始化再声明一个无参的构造方法,实现构造方法的重载方法的重载☻练习MethodAdd.java在类Metho

dAdd中,声明三个方法add,分别计算两个整数的和三个整数的和、两个双精度浮点数(double)数的和,并在该类写一个主程序中调用这个三个函数,并将其结果打印Contents类和对象的关系1构造方法2对象创建的内存模型3J

ava中的关键字4对象创建的内存模型•引用类型变量除了8种基本数据类型的变量,其他变量都是引用类型变量类(class)接口(interface)数组Personp;Animala;int[]c;对象创建的内存模型0x8

0001.7444“lisi”Personp0x8000nameageheightPersonp=newPerson(“lisi”,44,1.74);•引用类型变量的内存模型对象创建的内存模型0x80000x3000……1.7444“lisi”Personp0x3000nameage

height1.7333“zhang”nameageheightPersonq0x8000•引用类型变量的内存模型Personp=newPerson(“zhang”,33,1.73);Personq=newPerson(“lisi”,44

,1.74);变量的作用域•变量的作用域全局变量类体中声明的成员变量为全局变量全局变量在类的整个生命周期中都有效局部变量方法体中声明的变量,方法中的参数,或代码块中声明的变量,都是局部变量局部变量只在方法调用的过程中有效,方法调用结束后失效变量的作用域•变量的作用域classE

mployee{Stringname;intage;doublesalary;publicStringshowName(){Stringhello=“你好”;System.out.println(hello+name);r

eturnname;}publicvoidupdateName(Stringname2){name=name2;}}全局变量局部变量变量的作用域•变量初始化的顺序隐式赋予变量默认值成员变量显式赋予初始值通过构造方法体赋予新值示例Persi

anCat.java各类型变量默认初始化值类型缺省值类型缺省值byte(byte)0char'\u0000'short(short)0float0.0Fint0double0.0Dlong0L引用对象nullbooleanfals

e变量的作用域☻练习给定下列代码的执行结果是____?publicclassX(privatestaticinta;publicstaticvoidmain(String[]args){modify(a);Sys

tem.out.println(a);}publicstaticvoidmodify(inta){a++;}}A.0B.1C.编译错误D.运行时异常答案:A程序执行过程硬盘程序.java编译.class文件内存③执

行过程中的内存管理代码JVM系统代码stackheapdatasegmentcodesegment基本数据类型变量引用类型变量地址引用变量静态变量常量存放代码Java代码在系统中的执行过程补充:参数传值•当方法被调用时,如果方法有参数,参数必须要实例化,即参数变量必

须有具体的值。•publicclassDate//类声明{intyear,month,day;//成员变量,表示年、月、日voidsetDate(inty,intm,intd)//成员方法,设置日期值{//无返回值,有4个参数year=y;month=m;day=d;}publi

cstaticvoidmain(Stringargs[]){Date1aday=newDate1();//创建对象aday.setDate(2013,9,28);//调用类方法}}1.基本数据类型参数的传值——值•这种数据传递方式被称为是值传递,方法接收参

数的值,但不能改变这些参数的值。2.引用类型参数的传值——地址•引用传值方式:Java的引用类型数据包括对象、数组和接口,当方法中参数是引用类型时,引用数据类型传递给方法的是数据在内存中的地址,方法中对参数变量的操作可以改变原变量的值。classPeople{Stringface;vo

idsetFace(Strings){face=s;}}classC{voidf(intx,doubley,Peoplep){x=x+1;y=y+1;p.setFace("笑脸");System.out.println("参数x和y的值分

别是:"+x+","+y);System.out.println("参数对象p的face是:"+p.face);}}publicclassEp4_8{publicstaticvoidmain(Stringargs[]

){intm=100;doublen=100.88;Peoplezhang=newPeople();zhang.setFace("很严肃的样子");Ca=newC();a.f(m,n,zhang);System.o

ut.println("main方法中m和n的值仍然分别是:"+m+","+n);System.out.println("main方法中对象zhang的face是:"+zhang.face);}}zhang.face="很严肃的样子";改变形参值导致实参值的改变zhang.face=“笑脸

";参数x和y的值分别是:101,101.88参数对象p的face是:笑脸main方法中m和n的值仍然分别是:100,100.88main方法中对象zhang的face是:笑脸补充内容——对象数组•在Java中不但可以声明由原始数据组成的数组,还可以声明由对象组成的数组;•声明

对象数组的方式如://假设已经定义了一个Student类/*声明由5个Student对象组成的数组*/Student[]stdAry=newStudent[5];对象数组==引用数组错误的理解方式学生对象的实例学生对象的实例学生

对象的实例学生对象的实例学生对象的实例01244堆栈stdAry堆栈stdAry正确的理解方式对象的引用01244对象的引用对象的引用对象的引用对象的引用对象数组示例/*对象数组示例,假设已经定义了Stu

dent类*/publicstaticvoidmain(String[]args){/*创建包含有5个Student引用的数组*/Student[]stdAry=newStudent[5];/*逐一为每个引用创建对象实例*/stdAry[0]=newStudent("张三",

18);stdAry[1]=newStudent("李四",20);stdAry[2]=newStudent("王五",24);stdAry[4]=newStudent("郑六",21);stdAry

[4]=newStudent("田七",19);for(inti=0;i<stdAry.length;i++){stdAry[i].display();}}对象数组的存放形式堆栈stdAry0124stdAry[0]stdAry[1]stdAry[2]stdAry[4]

stdAry[4]4张三18李四20王五24郑六21田七19垃圾回收机制•垃圾回收器(GC,GarbageCollection)Java的一个重要特点句是具有一个垃圾回收器,并且能够自动回收垃圾,这也是Java相对于其他语言

有优势的地方对内存的释放和回收的工作是由Java运行系统(JRE)承担的,不用编程者关注在Java程序运行过程中,一个垃圾回收器会不定时地被唤起检查是否有不再被使用的对象,并释放它们所占用的内存空间垃圾回收器的启用不由程序员控制,也无规律可循垃圾回收机制•垃圾回收机制—

System.gc()、nullJava里提供了一个System.gc()方法,使用这个方法可以建议垃圾回收器回收垃圾在Java中,可以通过将对象的引用变量设置为null,来暗示垃圾回收器来回收该对象classEmployee{Stringna

me;intage;doublesalary;publicstaticvoidmain(Stringargs[]){Employeee=newEmployee();newEmployee();e=null;System.gc();System.out.println(“Theprogrami

send”);}}垃圾回收机制后台线程主线程Objecto2=newObject();o2=null;Objecto1=newObject();o1objectTheheap检查出对象没有引用指向调用o2对象的finalize()方法垃圾回收机制回收分配给该对象的内存垃圾

回收采用Java多线程机制o2objectו垃圾回收机制垃圾回收机制☻练习什么时候程序会销毁一个对象x____?A.x.delete()B.x.finalize()C.System.gc()D.设置对象的引用为nullF.只有垃圾回收器才可以

销毁一个对象答案:FContents类和对象的关系1构造方法2对象创建的内存模型3Java中的关键字4Java中的关键字•this关键字代表对象自身的引用一个引用指向调用该方法的当前对象通常在类的方法定义中使用•用this关键字的情况方法中的变量与成员

变量重名在一个构造方法中,调用其它重载的构造方法返回当前对象的引用成员变量和局部变量publicclassEmployee{intsideA,sideB,sideC;voidsetSide(intsideA,intsideB,intsideC){this.sideA=

sideA;this.sideB=sideB;this.sideC=sideC;}}注:如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,这时如果想在该方法内使用成员变量,必须使用关键字this。Java中的关键字•static关键字static可以修饰的元素属性方法代码块•需要注

意的问题只能修饰类成员,不能修饰局部变量。Java中的关键字•static修饰的变量—静态变量所有对象共享也称为类变量用static修饰的成员变量,它们在类被载入时创建,只要类存在,static变量就存

在两种方式访问:直接访问:类名.属性;实例化后访问:对象名.属性静态属性Java中的关键字•static变量的内存模型Java中的关键字☻练习Person.java在Person类中添加一些代码,使其可以统计在整个使用过程中一共产

生了多少个Person类的实例对象提示:利用static修饰的变量Java中的关键字•static修饰的方法—静态方法不需要实例化,可以直接访问也称为类方法两种方式访问:直接访问:类名.方法名()实例化后访问:对象名

.方法名()•static方法的作用简化方法的使用;便于访问静态属性;•注意事项静态方法里只能直接访问静态成员,而不能直接访问类中的非静态成员静态方法中不能使用this、super关键字静态方法不能被非静态方法覆盖,静态方法不能修饰构造方法静态方法Java中的关

键字•static修饰的代码块—静态代码块一个类中由static关键字修饰的,不包含在任何方法体中的代码块当类被载入时,静态代码块被执行,且只被执行一次静态块经常用来进行类属性的初始化静态代码块Java中的关键字☻练习publicclassCircl

eStatic{staticdoublepi=3.14;intradius=100;publicstaticvoidmain(String[]args){System.out.println(_1_);//打印pi__________2__________;System.out.pr

intln(__3__);//打印radius}}答案:1.pi2.CircleStaticc=newCircleStatic()3.c.radius总结•类和对象的关系如何定义类对象的创建•构造方法

如何定义构造方法方法的重载•对象创建的内存模型引用类型变量变量的初始化垃圾回收机制•Java中的关键字this关键字static关键字

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?