第3章面向对象上补充案例文档格式.docx

上传人:b****6 文档编号:16012020 上传时间:2022-11-17 格式:DOCX 页数:31 大小:157.59KB
下载 相关 举报
第3章面向对象上补充案例文档格式.docx_第1页
第1页 / 共31页
第3章面向对象上补充案例文档格式.docx_第2页
第2页 / 共31页
第3章面向对象上补充案例文档格式.docx_第3页
第3页 / 共31页
第3章面向对象上补充案例文档格式.docx_第4页
第4页 / 共31页
第3章面向对象上补充案例文档格式.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

第3章面向对象上补充案例文档格式.docx

《第3章面向对象上补充案例文档格式.docx》由会员分享,可在线阅读,更多相关《第3章面向对象上补充案例文档格式.docx(31页珍藏版)》请在冰豆网上搜索。

第3章面向对象上补充案例文档格式.docx

4、设计思路〔实现原理〕

1〕使用class关键字定义一个表示学生类型的类,类名为Student。

2〕在Student类中定义两个成员变量name和age,分别用来表示XX和年龄。

其中,name的数据类型为String,变量age的数据类型为int。

3〕在Student类中定义一个表示说话行为的speak()方法,用于输出学生的XX和年龄。

二、案例实现

classStudent{

Stringname;

intage;

voidspeak(){

System.out.println("

我的名字是"

+name+"

,今年"

+age+"

岁"

);

}

三、案例总结

1、Java语言严格区分大小写,class和Class是不同的,在定义类时只能使用class关键字

2、在Student类中,成员变量name是String类型,String表示一个字符串,后面的章节会详细讲解

3、思考一下:

自己定义一个手机(Phone)类,在类中定义品牌(brand)和价格(price)属性,定义打的call()方法,代码如下所示

publicclassPhone{

Stringbrand;

doubleprice;

voidcall(){

System.out.println("

hi,howareyoudoing"

}

案例3-2同一对象被多个变量引用

00103003

对象创建与使用

掌握如何创建类的对象

掌握如何使用两个或者多个变量引用同一个实例对象。

在程序中,一个对象可能在多处使用,这样就可能需要有多个变量来引用这个对象。

为了让初学者更好地掌握对象的创建和使用,本案例将基于案例3-1,创建三个学生对象,它们的引用变量分别是s1、s2和s3,首先分别使用s1和s2引用,为name和age赋值,然后调用speak()方法,最后将s2变量赋值给s3,s3也调用speak()方法。

1〕编写Example01类

2〕在main()方法中,创建Student类的第一个对象,其引用变量为s1,使用s1调用name和age变量分别为它们赋值为“X三〞和“19〞,然后调用speak()方法。

3〕创建Student类的第二个对象,其引用变量为s2,使用s2分别为name和age赋值为“李四〞和“20〞,然后调用speak()方法。

4〕创建Student类的第三个对象,其引用变量为s3,将s2的值赋给s3,然后使用s3调用speak()方法。

publicclassExample01{

publicstaticvoidmain(String[]args){

Students1=newStudent();

s1.name="

X三"

;

s1.age=19;

s1.speak();

Students2=newStudent();

s2.name="

李四"

s2.age=20;

s2.speak();

Students3=newStudent();

s3=s2;

s3.speak();

运行结果如图3-1所示。

图3-1运行结果

1、Students3=s2这句代码的作用是将s2引用的内存地址赋值给s3,换句话说,就是使变量s3和s2引用了同一个Student对象,因此s3.speak()方法和s2.speak()方法打印的结果相同。

为了更加深刻地了解这句代码的含义,下面通过一X内存图来演示,具体如图3-2所示。

图3-2内存图

2、可以使用两个或者多个变量引用同一个实例对象,只要通过其中一个变量对该对象的属性进行修改,使用其它引用变量访问时,访问的都是修改后的属性。

案例3-3类的封装

00103004

类的封装

了解为什么要对类进行封装

了解如何实现类的封装

在案例3-2中,s1对象的年龄是可以随便赋值的,如果将age的值赋值为-30,显然违背了事实。

为了解决这类问题,我们需要对类进行封装,防止外界对类中的成员变量随意访问。

为了让初学者更好地掌握类的封装,本案例将使用private关键字对成员变量name和age进行私有化,同时分别提供一个setName(Stringn)和setAge(inta)方法用于外界的访问,其中setAge(inta)中需要对age进行判断。

1)编写测试类Example02,将属性age的值设为-30,演示不合理现象。

2)对Student类进行修改,将name和age属性使用private修饰,然后定义getName()、setName(Stringn)、getAge()和setAge(inta)四个对外访问name和age的方法。

3)在setAge(inta)方法中对传入的参数进行检查,如果输入值为负数,则打印出“设置的年龄不合法〞,如果不为负数,才将其设置为age属性的值。

4〕对Example02类进行修改,在main()方法中创建Student类的实例对象,通过调用对象的setName(Stringn)和setAge(inta)方法来设置的name属性和age属性值,并调用speak()方法。

1、定义Example02类,代码如下所示:

publicclassExample02{

publicstaticvoidmain(String[]args){

Students1=newStudent();

s1.name="

小新"

s1.age=-30;

s1.speak();

运行结果如图3-3所示。

图3-3运行结果

从上图可以看出,当将age的值设置为-30后,程序不会报错,但却违背了现实。

2、对Student类进行封装,其代码如下:

classStudent{

privateStringname="

privateintage=19;

publicStringgetName(){

returnname;

publicvoidsetName(Stringn){

name=n;

publicintgetAge(){

returnage;

publicvoidsetAge(inta){

//对传入的参数进行检查

if(a<

0){

System.out.println("

设置的年龄不合法"

}else{

age=a;

}

System.out.println("

我的名字是"

+name+"

,今年"

+age+"

s1.setName("

s1.setAge(-30);

运行结果如图3-4所示。

图3-4运行结果

1、Student的name和age属性使用private关键字修饰为私有后,在Example02类中不能再使用s1.name和s1.age的方式访问这两个属性,只能通过public类型的setName(Stringn)和setAge(inta)方法进行访问。

在上面的代码中,调用setAge(inta)方法时的传入参数为-30,由于参数小于0,会打印出“设置的年龄不合法〞,并不会将负数赋值给age属性。

由此可见,只要实现了封装就能对外界的访问进行控制,避免对私有变量随意修改而引发问题。

2、思考一下:

定义一个Division类(除法),类中定义两个int类型的私有成员变量dividend(被除数)和

divisor(除数),默认值都为1。

定义四个公有方法setDividend(intmDividend)、getDividend()、setDivisor(intmDivisor)和getDivisor(),用于对私有属性进行设置和访问。

在setDivisor(intmDivisor)方法中对传入的参数进行检查,如果传入值为零,则打印“除数不能为零〞,如果不为零,才将其设置为divisor属性的值。

定义Example03类,在类的main()方法中创建Division对象,分别调用setDividend(intmDividend)和setDivisor(intmDivisor)方法给两个私有属性dividend和divisor赋值,然后打印出dividend和divisor的结果。

(1)定义Division类,代码如下所示:

publicclassDivision{

privateintdividend=1;

privateintdivisor=1;

publicvoidsetDividend(intmDividend){

dividend=mDividend;

publicintgetDividend(){

returndividend;

publicvoidsetDivisor(intmDivisor){

if(mDivisor==0){

除数不能为零"

}else{

divisor=mDivisor;

publicintgetDivisor(){

returndivisor;

(2)定义Example03类,代码如下所示:

publicclassExample03{

Divisiondivision=newDivision();

division.setDividend(10);

division.setDivisor(0);

intdividend=division.getDividend();

intdivisor=division.getDivisor();

System.out.println(dividend/divisor);

运行结果如图3-5所示。

图3-5运行结果

从运行结果可以看出,由于实现了Divisio

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1