




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东协和学院《产能成本决策虚拟仿真实验》2023-2024学年第二学期期末试卷
- 商丘职业技术学院《天然提取物与生物活性物质》2023-2024学年第二学期期末试卷
- 济宁2025年山东济宁市直教育系统校园招聘55人(曲阜师范大学站)笔试历年参考题库附带答案详解
- 扬州环境资源职业技术学院《数据可视化与数据新闻》2023-2024学年第二学期期末试卷
- 海南体育职业技术学院《Java语言程序设计》2023-2024学年第二学期期末试卷
- 泸州职业技术学院《中国画》2023-2024学年第二学期期末试卷
- 泰安2025年山东泰安岱岳区事业单位初级综合类岗位招聘103人笔试历年参考题库附带答案详解-1
- 《负数的初步认识》教学设计-2024-2025学年五年级上册数学苏教版
- 浙江商业职业技术学院《石油工程专业认知专题》2023-2024学年第二学期期末试卷
- 河北科技大学《通信电路设计》2023-2024学年第二学期期末试卷
- 子痫前期危险因素筛查策略
- 燃气过户协议书
- 射频同轴电缆简介
- 《劳动专题教育》课件-劳动的产生
- 中央经济会议2024原文及解释
- QB-T 5823-2023 工坊啤酒机械 发酵罐
- 新高考化学2024备考选择题高频热点专项突破16 弱电解质的电离平衡
- 2021年古包头市昆都仑区水务公司招聘考试试题及答案
- 关于中小企业“融资难”问题的对策研究-基于台湾经验和启示
- 固体废弃物管理培训
- 硬件工程师职业生涯规划
评论
0/150
提交评论