云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 第3章-面向对象(上)-补充案例

第3章-面向对象(上)-补充案例

  • 62 次阅读
  • 3 次下载
  • 2025/5/3 12:18:54

第3章-面向对象(上)-补充案例

}

}

public int getAge() { }

public void setAge(int a) { }

void speak() { }

System.out.println(\我的名字是\,今年\岁\// 对传入的参数进行检查 if(a < 0){ }

System.out.println(\设置的年龄不合法\age = a; }else{ return age; name = n;

public class Example02 { }

public static void main(String[] args) { }

Student s1 = new Student(); s1.setName(\小新\s1.setAge(-30); s1.speak();

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

图3-4 运行结果

三、案例总结

1、Student的name和age属性使用private关键字修饰为私有后,在Example02类中不能再使用s1.name和s1.age的方式访问这两个属性,只能通过public类型的setName(String n)和setAge(int a)方法进行访问。在上面的代码中,调用setAge(int a)方法时的传入参数为-30,由于参数小于0,会打印出“设置的年龄不合法”,并不会将负数赋值给age属性。由此可见,只要实现了封装就能对外界的访问进行控制,避免对私有变量随意修改而引发问题。

2、思考一下:定义一个Division类(除法),类中定义两个int类型的私有成员变量dividend(被除数)和 divisor(除数),默认值都为1。定义四个公有方法setDividend(int mDividend )、getDividend()、setDivisor(int mDivisor)和getDivisor(),用于对私有属性进行设置和访问。在setDivisor(int mDivisor)方法中对传入的参数进行检查,如果传入值为零,则打印“除数不能为零”,如果不为零,才将其设置为divisor属性的值。

5 / 25

第3章-面向对象(上)-补充案例

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

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

public class Division { }

private int dividend = 1; private int divisor = 1;

public void setDividend(int mDividend) { }

public int getDividend() { }

public void setDivisor(int mDivisor) { }

public int getDivisor() { }

return divisor; if (mDivisor == 0) { }

System.out.println(\除数不能为零\divisor = mDivisor; } else {

return dividend; dividend = mDividend;

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

public class Example03{ }

public static void main(String[] args) { }

Division division = new Division(); division.setDividend(10); division.setDivisor(0);

int dividend = division.getDividend(); int divisor = division.getDivisor(); System.out.println(dividend / divisor);

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

图3-5 运行结果

从运行结果可以看出,由于实现了Division类的封装,在setDivisor(int mDivision)方法中对传入的值进行检查,从而避免程序中出现除数为0的错误。

6 / 25

第3章-面向对象(上)-补充案例

案例3-4 定义有参的构造方法 一、案例描述

1、 考核知识点

编号:

名称:构造方法的定义

2、 练习目标

? 掌握有参构造方法的定义方式

? 理解系统会自动分配无参构造方法的情况

3、 需求分析

如果希望在创建对象的时候直接为其属性赋值,可以定义有参的构造方法。有参构造方法指的是在初始化对象时,接受外部传入的值并赋给对象的属性。为了让初学者掌握有参构造方法的用法,本案例将演示如何使用有参构造方法完成对象属性的初始化。

4、 设计思路(实现原理)

1) 定义一个Student类,该类有一个age属性,在类中定义一个有参数的构造方法,该参数用

于为age属性赋值。

2) 编写一个测试类Example04,在main()方法中通过有参构造方法创建一个对象。 3) 打印该对象age属性的值。

二、案例实现

1、对Student类进行修改,代码如下所示:

class Student { }

int age;

public Student(int mAge) { }

age = mAge;

2、定义Example04类,代码如下所示:

public class Example04 { }

public static void main(String[] args) { }

Student s1 = new Student(20);

System.out.println(\属性的值为:\

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

图3-6 运行结果 7 / 25

第3章-面向对象(上)-补充案例

三、案例总结

1、从运行结果可以看出,new Student(20)语句调用了有参的构造方法Student(int mAge),动态地将20传递给了age属性。和普通方法一样,构造方法中同样可以接收多个参数,只要在使用new关键字创建对象时,传入数量相同和类型一致的参数,就可以自动地调用对应的构造方法。

2、思考一下:在Example04的main()方法中是否能够使用new Student()创建对象呢?答案是否定的,因为new Student()会调用无参的构造方法,而本案例的Student类中并没有定义无参的构造方法。

有些同学肯定会问,之前的Student类都没有定义无参的构造方法,却能使用new Student()创建对象,本案例为什么不行呢?这是因为一个类中如果没有定义构造方法,系统会默认为其分配一个方法体为空的无参构造方法,而一旦定义了构造方法,系统就不再提供默认的构造方法。本案例中由于我们定义了一个有参的构造方法,所以系统不会默认分配无参的构造方法,此时如果通过new Student()去调用无参的构造方法,程序就会发生错误。

案例3-5 构造方法的重载 一、案例描述

1、 考核知识点

编号:

名称:构造方法重载

2、 练习目标

? 掌握如何在类中定义重载的构造方法

3、 需求分析

和普通方法一样,构造方法也可以重载。不同的构造方法,可以为不同的属性进行赋值。本案例将通过创建对象的方式演示不同构造方法的使用方式,并根据构造方法的输出结果对构造方法的重载进行学习。

4、 设计思路(实现原理)

1)对Student类进行修改,在类中定义三个重载的构造方法,包括无参的构造方法,接收一个String类型参数的构造方法,接收String类型和int类型两个参数的构造方法。

2)编写测试类Example05,在main()方法中,分别使用三个重载的构造方法创建三个Student对象。

二、案例实现

1、对Student类进行修改,代码如下所示:

class Student {

public Student() { }

public Student(String name) {

System.out.println(\无参的构造方法\

8 / 25

搜索更多关于: 第3章-面向对象(上)-补充案例 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第3章-面向对象(上)-补充案例 } } public int getAge() { } public void setAge(int a) { } void speak() { } System.out.println(\我的名字是\,今年\岁\// 对传入的参数进行检查 if(a < 0){ } System.out.println(\设置的年龄不合法\age = a; }else{ return age; name = n; public class Example02 { } public static void main(String[] args) { } St

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com