ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:23.11KB ,
资源ID:4356820      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4356820.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第3章补充案例之欧阳术创编.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第3章补充案例之欧阳术创编.docx

1、第3章补充案例之欧阳术创编第3章 补充案例时间:2021.02.02创作:欧阳术案例3-1 定义学生类一、案例描述 1、考核知识点编号:00103002名称:类和对象2、练习目标掌握类定义的方式掌握如何在类中定义成员变量和成员方法3、需求分析在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。 4、设计思路(实现原理)1)使用class关键字定义一个表示学生类型的类,类名为Student。

2、2)在Student类中定义两个成员变量name和age,分别用来表示姓名和年龄。其中,name的数据类型为String,变量age的数据类型为int。 3)在Student类中定义一个表示说话行为的speak()方法,用于输出学生的姓名和年龄。二、案例实现class Student String name; int age; void speak() System.out.println(我的名字是 +name+,今年 +age+岁); 三、案例总结1、Java语言严格区分大小写,class和Class是不同的,在定义类时只能使用class关键字2、在Student类中,成员变量name是S

3、tring类型,String表示一个字符串,后面的章节会详细讲解3、思考一下:自己定义一个手机(Phone)类,在类中定义品牌(brand)和价格(price)属性,定义打电话的call()方法,代码如下所示public class Phone String brand; double price; void call() System.out.println(hi,how are you doing); 案例3-2 同一对象被多个变量引用一、案例描述1、考核知识点编号:00103003名称:对象创建与使用2、练习目标掌握如何创建类的对象掌握如何使用两个或者多个变量引用同一个实例对象。3、需求

4、分析在程序中,一个对象可能在多处使用,这样就可能需要有多个变量来引用这个对象。为了让初学者更好地掌握对象的创建和使用,本案例将基于案例3-1,创建三个学生对象,它们的引用变量分别是s1、s2和s3,首先分别使用s1和s2引用,为name和age赋值,然后调用speak()方法,最后将s2变量赋值给s3, s3也调用speak()方法。4、设计思路(实现原理)1)编写Example01类2)在main()方法中,创建Student类的第一个对象,其引用变量为s1,使用s1调用name和age变量分别为它们赋值为“张三”和“19”,然后调用speak()方法。3)创建Student类的第二个对象,

5、其引用变量为s2,使用s2分别为name和age赋值为“李四”和“20”,然后调用speak()方法。4)创建Student类的第三个对象,其引用变量为s3,将s2的值赋给s3,然后使用s3调用speak()方法。二、案例实现public class Example01 public static void main(String args) Student s1 = new Student(); s1.name=张三; s1.age=19; s1.speak(); Student s2 = new Student(); s2.name=李四; s2.age=20; s2.speak(); S

6、tudent s3 = new Student(); s3=s2; s3.speak(); 运行结果如图3-1所示。图3-1运行结果三、案例总结1、Student s3 = s2这句代码的作用是将s2引用的内存地址赋值给s3,换句话说,就是使变量s3和s2引用了同一个Student对象,因此s3.speak()方法和s2.speak()方法打印的结果相同。通过一张内存图来演示,具体如图3-2所示。图3-2内存图2、可以使用两个或者多个变量引用同一个实例对象,只要通过其中一个变量对该对象的属性进行修改,使用其它引用变量访问时,访问的都是修改后的属性。案例3-3 类的封装一、案例描述1、考核知识点

7、编号:00103004名称:类的封装2、练习目标了解为什么要对类进行封装了解如何实现类的封装3、需求分析在案例3-2中,s1对象的年龄是可以随便赋值的,如果将age的值赋值为-30,显然违背了事实。为了解决这类问题,我们需要对类进行封装,防止外界对类中的成员变量随意访问。为了让初学者更好地掌握类的封装,本案例将使用private关键字对成员变量name和age进行私有化,同时分别提供一个setName(String n)和setAge(int a)方法用于外界的访问,其中setAge(int a)中需要对age进行判断。4、设计思路(实现原理)1)编写测试类Example02,将属性age的值

8、设为-30,演示不合理现象。2)对Student类进行修改,将name和age属性使用private修饰,然后定义getName()、setName(String n)、getAge()和setAge(int a)四个对外访问name和age的方法。3)在setAge(int a)方法中对传入的参数进行检查,如果输入值为负数,则打印出“设置的年龄不合法”,如果不为负数,才将其设置为age属性的值。4)对Example02类进行修改,在main()方法中创建Student类的实例对象,通过调用对象的setName(String n)和setAge(int a)方法来设置的name属性和age属性

9、值,并调用speak()方法。二、案例实现1、定义Example02类,代码如下所示:public class Example02 public static void main(String args) Student s1 = new Student(); s1.name = 小新; s1.age = -30; s1.speak(); 运行结果如图3-3所示。图3-3运行结果 从上图可以看出,当将age的值设置为-30后,程序不会报错,但却违背了现实。2、对Student类进行封装,其代码如下:class Student private String name = 张三; private

10、int age = 19; public String getName() return name; public void setName(String n) name = n; public int getAge() return age; public void setAge(int a) / 对传入的参数进行检查 if(a 0) System.out.println(设置的年龄不合法); else age = a; void speak() System.out.println(我的名字是 + name + ,今年 + age + 岁); public class Example02

11、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)方法时的传入参数为

12、-30,由于参数小于0,会打印出“设置的年龄不合法”,并不会将负数赋值给age属性。由此可见,只要实现了封装就能对外界的访问进行控制,避免对私有变量随意修改而引发问题。2、思考一下:定义一个Division类(除法),类中定义两个int类型的私有成员变量dividend(被除数)和divisor(除数),默认值都为1。定义四个公有方法setDividend(int mDividend )、getDividend()、setDivisor(int mDivisor)和getDivisor(),用于对私有属性进行设置和访问。在setDivisor(int mDivisor)方法中对传入的参数进行检

13、查,如果传入值为零,则打印“除数不能为零”,如果不为零,才将其设置为divisor属性的值。 定义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

14、setDividend(int mDividend) dividend = mDividend; public int getDividend() return dividend; public void setDivisor(int mDivisor) if (mDivisor = 0) System.out.println(除数不能为零); else divisor = mDivisor; public int getDivisor() return divisor; (2)定义Example03类,代码如下所示:public class Example03 public static v

15、oid 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)方

16、法中对传入的值进行检查,从而避免程序中出现除数为0的错误。案例3-4 定义有参的构造方法一、案例描述 1、考核知识点编号:00103005名称:构造方法的定义2、练习目标掌握有参构造方法的定义方式理解系统会自动分配无参构造方法的情况3、需求分析如果希望在创建对象的时候直接为其属性赋值,可以定义有参的构造方法。有参构造方法指的是在初始化对象时,接受外部传入的值并赋给对象的属性。为了让初学者掌握有参构造方法的用法,本案例将演示如何使用有参构造方法完成对象属性的初始化。4、设计思路(实现原理)1)定义一个Student类,该类有一个age属性,在类中定义一个有参数的构造方法,该参数用于为age属性赋

17、值。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(age属性的值为:+s1.age);

18、 运行结果如图3-6所示。图3-6运行结果三、案例总结1、从运行结果可以看出,new Student(20)语句调用了有参的构造方法Student(int mAge),动态地将20传递给了age属性。和普通方法一样,构造方法中同样可以接收多个参数,只要在使用new关键字创建对象时,传入数量相同和类型一致的参数,就可以自动地调用对应的构造方法。2、思考一下:在Example04的main()方法中是否能够使用new Student()创建对象呢?答案是否定的,因为new Student()会调用无参的构造方法,而本案例的Student类中并没有定义无参的构造方法。有些同学肯定会问,之前的Stud

19、ent类都没有定义无参的构造方法,却能使用new Student()创建对象,本案例为什么不行呢?这是因为一个类中如果没有定义构造方法,系统会默认为其分配一个方法体为空的无参构造方法,而一旦定义了构造方法,系统就不再提供默认的构造方法。本案例中由于我们定义了一个有参的构造方法,所以系统不会默认分配无参的构造方法,此时如果通过new Student()去调用无参的构造方法,程序就会发生错误。案例3-5 构造方法的重载一、案例描述1、考核知识点编号:00103006名称:构造方法重载2、练习目标掌握如何在类中定义重载的构造方法3、需求分析和普通方法一样,构造方法也可以重载。不同的构造方法,可以为不

20、同的属性进行赋值。本案例将通过创建对象的方式演示不同构造方法的使用方式,并根据构造方法的输出结果对构造方法的重载进行学习。4、设计思路(实现原理) 1)对Student类进行修改,在类中定义三个重载的构造方法,包括无参的构造方法,接收一个String类型参数的构造方法,接收String类型和int类型两个参数的构造方法。2)编写测试类Example05,在main()方法中,分别使用三个重载的构造方法创建三个Student对象。二、案例实现1、对Student类进行修改,代码如下所示:class Student public Student() System.out.println(无参的构造

21、方法); public Student(String name) System.out.println(一个参数的构造方法); public Student(String name, int age) System.out.println(两个参数的构造方法); 2、定义Example05类,代码如下所示:public class Example05 public static void main(String args) Student s1 = new Student(); Student s2 = new Student(Rose); Student s3 = new Student(R

22、ose, 23); 运行结果如图3-7所示。图3-7运行结果三、案例总结一个类中可以定义多个重载的构造方法,在创建对象时,根据传入参数的不同会调用相应的构造方法。案例3-6 this关键字访问构造方法一、案例描述1、考核知识点编号:00103007名称:this关键字的使用2、练习目标掌握如何在构造方法中使用this关键字访问重载的构造方法3、需求分析如果一个类中定义了多个重载的构造方法,为了避免在重载的构造方法中重复书写代码,可以在一个构造方法中使用this关键字调用其它的构造方法。为了让初学者掌握this关键字访问构造方法的用法,本案例将演示如何使用this关键字调用其他的构造方法。4、设

23、计思路(实现原理)1)在Student类中创建多个重载的构造方法,包括无参的构造方法和一个参数的构造方法,以及两个参数的构造方法。2)在一个参数的构造方法中使用this关键字调用无参构造方法,在两个参数的构造方法中调用一个参数的构造方法。3)编写测试类Example06,在main()方法中,调用两个参数的构造方法创建对象,演示构造方法的执行顺序。二、案例实现1、对Student类进行修改,代码如下所示:class Student public Student() System.out.println(无参的构造方法); public Student(String name) this();

24、System.out.println(一个参数的构造方法); public Student(String name, int age) this(name); System.out.println(两个参数的构造方法); 2、定义Example06类,代码如下所示:public class Example06 public static void main(String args) Student s1 = new Student(Jack, 22); 运行结果如图3-8所示。图3-8运行结果三、案例总结1、从运行结果可以看出,三个构造方法都被调用了,为了更加清楚地了解三个构造方法的执行顺序,

25、下面通过一张图例进行说明,如图3-9所示。图3-9构造方法的执行顺序2、在构造方法中,使用 this调用重载构造方法的代码必须放在第一行,否则程序不能通过编译,这就限定了在一个构造方法中只能调用一次重载的构造方法。3、在构造方法中可以通过this.方法名(参数 )的方式调用普通的成员方法,但是在普通的成员方法中不能使用this(参数 )的方式来调用构造方法。案例3-7静态变量一、案例描述1、考核知识点编号:00103009名称:静态变量 2、练习目标了解静态变量的作用掌握静态变量的定义和使用方式3、需求分析当多个对象存储的数据相同时,可以使用静态变量的方式存储。例如,有一个Student类具有

26、name、className属性,请根据该类创建出三个Student对象,并将这些对象的className值都设置为“三年级二班”。 4、设计思路(实现原理)1)定义Student类,并在类中定义name和className属性。2)编写测试类Example08,在main()方法中创建三个学生对象,并分别为这些对象的name和className属性赋值,然后输出这些对象的name和className值。3)对Student类进行修改,将className定义为静态变量。4)修改测试类,在main()方法中使用Student.className = “三年级二班”语句为静态变量classNam

27、e进行赋值,然后输出这些对象的name和className值。为了更好地理解Student类中静态变量className和Student实例对象的关系,下面通过一个图例进行演示,如图3-10所示:图3-10静态变量与实例对象的关系二、案例实现 1、定义Student类,代码如下所示:class Student String name; String className; 2、定义Example08类,代码如下所示:public class Example08 public static void main(String args) Student s1 = new Student(); s1.

28、name = 张三; s1.className = 三年级二班; Student s2 = new Student(); s2.name = 李四; s2.className = 三年级二班; Student s3 = new Student(); s3.name = 王五; s3.className = 三年级二班;System.out.println(我的名字是 + s1.name + ,来自 + s1.className); System.out.println(我的名字是 + s2.name + ,来自 + s2.className); System.out.println(我的名字是

29、 + s3.name + ,来自 + s3.className); 运行结果如图3-11所示。图3-11运行结果 3、对Student类进行修改,代码如下所示:class Student String name; static String className; 4、对Example08类进行修改,代码如下所示:public class Example08 public static void main(String args) Student.className = 三年级二班; Student s1 = new Student(); s1.name = 张三; Student s2 = new Student(); s2.name = 李四; Student s3 = new Student(); s3.name = 王五; System.out.println(我的名字是 + s1.name + ,来自 + s1.className); System.out.println(我的名字是 + s2.name + ,来自 + s2.className); System.out.println(我的名字

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

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