java275 03第三章面向对象基础_第1页
java275 03第三章面向对象基础_第2页
java275 03第三章面向对象基础_第3页
java275 03第三章面向对象基础_第4页
java275 03第三章面向对象基础_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

Java275——认识Java第三章面向对象基础目标:类和对象的关系;构造方法的特征和作用;对象创建的内存模型。学时:4学时教学方法:讲授ppt+上机练习类和对象的关系面向对象的思想(

Object

Oriented

Programming,简称

OOP)面向对象的基本思想是,从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式面向对象更加强调运用人类在日常的思维逻辑中经常采用的思维方法与原则面向对象的三个特征封装继承多态类和对象的关系面向对象与面向过程public

class

Icebox

{static

void

putThings(String

things){System.out.println("把冰箱门打开");System.out.println("把"+things+"放进来");System.out.println("把冰箱门关上");}}void

OpenIcebox(){printf(“把冰箱门打开\n");}void

PutElephantI(){printf(“把大象放冰箱\n");}void

CloseIcebox(){printf(“把冰箱们关上\n");}int

main(){OpenIcebox();PutElephantIn();CloseIcebox();}public

class

Mine

{public

static

void

main(String

args[]){Icebox.putThings("大象");}}面向对象面向过程Icebox.javaMine.javaputElephantBox.c类和对象的关系类的定义把相似的对象划归成一个类。在软件设计中,类,就是一个模板,它定义了通用于一个特定种类的所有对象的属性(变量)和行为(方法)。类和对象的关系类的定义[访问权限控制符]class类名{类的成员…}修饰符一般为public,也可以没有修饰符。注意类名的命名规范。类名一般大写类的成员:成员变量(属性)成员方法(方法)通过“.”调用属性和方法类和对象的关系类的定义Employee.javaclass

Employee

{String

name;intage;

double

salary;public

String

showName(){System.out.println(name);returnname;}public

int

showAge(){System.out.println(age);returnage;}public

voidupdateName(String

name2){name=

name2;}public

void

getSalary(){System.out.println("The

salary

of

this

month

is

2000");}}属性方法类和对象的关系类的定义☻

练习

Person.java定义一个Person类,Person类具有名字、年龄及性别等属性,并具有一个getInfo()方法可以打印出Person类的属性,sayHello()方法和大家说“Hello

everybody!”PersonnameagesexgetInfo()sayHello()类和对象的关系类的定义☻

练习

MyDate.java

定义一个点类MyDate,包含三个成员变量year、month、day分别表示年、月、日,以及每个属性对应的get和set方法(如,

year有getYear()方法用来获得日期的年份,还有setYear(inty)方法用来修改或设置日期的年份),最后还有printDate()方法,调用该方法可以把日期按照“yyyy-mm-dd”的形式输出。Java中的关键字this关键字代表对象自身的引用一个引用指向调用该方法的当前对象通常在类的方法定义中使用用this关键字的情况方法中的变量与成员变量重名在一个构造方法中,调用其它重载的构造方法返回当前对象的引用示例

Dog.java类和对象的关系类和对象的关系类(class)

—是对某一类事物的描述对象(object)

—是实际存在的某类事物的个体,也称为实例(instance)类是创建对象的模板,对象是类的实例。类和对象的关系对象的创建语法格式示例TestEmployee.java类名对象名=new

构造函数Employee

zhang

=

new

Employee(

)类和对象的关系对象的创建☻

练习

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

练习

TestDate.java在TestDate类里写一个main方法,在main()方法中:创建一个MyDate类的对象

通过setXXX()将该日期对象的时间设置为“2009年12月25日”在控制台上打印该对象的月份把该日期对象按“2009-12-25”的格式输出类和对象的关系匿名对象创建完对象,在调用该对象的方法时,也可以不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫匿名对象使用匿名对象的情况如果对一个对象只需要进行一次方法调用newPerson().sayHello()Person

p1

=

new

Person();p1.sayHello();方法的重载方法的重载(overload)函数的重载就是在同一个区域内同名但参数(个数、类型或顺序)不同的多个方法互为重载,与返回值类型无关。方法重载的规则函数名称相同函数的参数必须不同参数个数不同

参数类型不同

参数顺序不同函数的返回值类型可以相同,也可以不同方法的重载方法的重载(overload)FuncSum.java方法的重载☻

练习下列选项中,哪些可以与void

setAge(int

year,int

month,int

day)方法在同一个类中定义

?A.

public

void

setAge()

{ B.

void

setAge(int

age)

{}

}C.

void

setAge(int

y,int

m,int

d){ D.

int

setAge(Date

d)

{}

}E.

int

setAge(int

year,int

month,int

day){}F.

void

setage(intyear,intmonth,int

dat){}答案:ABDF方法的重载☻

练习

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

练习MethodAdd.java在类MethodAdd中,声明三个方法add,分别计算两个整数的和三个整数的和、两个双精度浮点数(double)数的和,并在该类写一个主程序中调用这个三个函数,并将其结果打印构造方法构造方法(构造函数/构造器,Constructor)与类同名有参数,经常重载不返回值通常是public的,但是private的也有意义不能直接调用,通过new调用在一个类中,具有上述特征的方法就是构造方法。构造方法的作用完成对象的创建,即完成对象的实例化一般使用构造方法来完成对成员变量的初始化示例

Employee.javaPersonnameagesexgetInfo()sayHello()构造方法构造方法普通方法普通方法构造方法public

void

Employee(){……}public

Employer(

){……}public

Employee

(Stringname,intage){……}publicEmployee(){……}构造方法默认的构造方法在Java中,每个类都至少要有一个构造方法,如果程序员没有在类里定义构造方法,系统会自动为这个类产生一个默认的构造方法;一旦编程者为该类定义了构造方法,系统就不再提供默认的构造方法class

Employee{……public

Employee(

)

{}……}class

Employee{}构造方法☻

练习下列关于类的定义的选项中,哪些可以通过new

Thing()方法来创建该类的一个对象

?A.

public

class

Thing

{B.

public

class

Thing

{publicThing()

{}}D.

public

classThing

{public

Thing(String

s)

{}}}C.

public

classThing

{public

Thing(void)

{}}E.

public

class

Thing

{

public

void

Thing()

{}public

Thing(String

s)

{}}答案:A、B构造方法☻

练习给定下列代码的执行结果是

?public

class

A{void

A()

{System.out.println(“Class

A”);}public

static

void

main(String[]

args)

{new

A();}}A.

Class

AC.

编译错误B.

在第2行处抛出异常D.

在第6行处抛出异常E.

代码执行后没有输出答案:E对象创建的内存模型0x30000x80000x3000nameageheight“lisi”441.74……“zhang”331.73nameageheightPerson

qPerson

p0x8000引用类型变量的内存模型Personp=newPerson(

“zhang”,

33,1.73);Personq=newPerson(

“lisi”,

44,

1.74);对象创建的内存模型引用类型变量除了8种基本数据类型的变量,其他变量都是引用类型变量类(class)接口(interface)数组Person

p

;Animala;int[

]

c

;对象创建的内存模型0x8000“lisi”441.74Person

p0x8000nameageheightPerson

p

=

new

Person(“lisi”,

44,1.74);引用类型变量的内存模型程序执行过程硬盘程序.java编译.class

文件内存③执行过程中的内存管理代码JVM系统代码stackheapdatasegmentcodesegment基本数据类型变量引用类型变量地址引用变量静态变量常量存放代码Java代码在系统中的执行过程垃圾回收机制垃圾回收器(GC,Garbage

Collection)Java的一个重要特点句是具有一个垃圾回收器,并且能够自动回收垃圾,这也是Java相对于其他语言有优势的地方对内存的释放和回收的工作是由Java运行系统(JRE)承担的,不用编程者关注在Java程序运行过程中,一个垃圾回收器会不定时地被唤起检查是否有不再被使用的对象,并释放它们所占用的内存空间垃圾回收器的启用不由程序员控制,也无规律可循垃圾回收机制垃圾回收机制—System.gc()、nullJava里提供了一个System.gc()方法,使用这个方法可以建议垃圾回收器回收垃圾在Java中,可以通过将对象的引用变量设置为null,来暗示垃圾回收器来回收cl该ass对Em象ployee{String

name;int

age;double

salary;publicstaticvoidmain(Stringargs[]){Employeee=

newEmployee();e

=

null;System.gc();System.out.println(“The

program

is

end”);}}垃圾回收机制后台线程主线程Object

o2

=

new

Object(

);o2

=

null;Object

o1

=

new

Object(

);o1objectThe

heap检查出对象没有引用指向调用o2对象的finalize()方法垃圾回收机制回收分配给该对象的内存垃圾回收采用Java多线程机制o2object×垃圾回收机制垃圾回收机制☻

练习什么时候程序会销毁一个对象x

?A.

x.delete()B.

x.finalize()C.

System.gc()D.

设置对象的引用为nullF

温馨提示

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

最新文档

评论

0/150

提交评论