补充案例 联系客服

发布时间 : 星期三 文章补充案例更新完毕开始阅读b036b809cd84b9d528ea81c758f5f61fb7362821

一、案例描述

1、 考核知识点

编号:00103002 名称:类和对象

2、 练习目标

掌握类定义的方式

掌握如何在类中定义成员变量和成员方法

3、 需求分析

在面向对象的思想中最核心就是对象,在程序中创建对象的前提是需要定义一个类。为了让初学者掌握类的定义方式,本案例将设计一个表示学生的类,该类具有表示姓名的属性name和表示年龄的属性age,同时还具有表示说话行为的方法speak(),用于输出学生的姓名和年龄。

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

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

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

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

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

二、案例实现

class Student{

String name; int age; void speak() {

\我的名字是 \,今年 \岁\ } }

三、案例总结

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

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

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

public class Phone { String brand; double price;

void call(){ } }

\

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

1、 考核知识点

编号:00103003

名称:对象创建与使用

2、 练习目标

掌握如何创建类的对象

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

3、 需求分析

在程序中,一个对象可能在多处使用,这样就可能需要有多个变量来引用这个对象。为了让初学者更好地掌握对象的创建和使用,本案例将基于案例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类的第二个对象,其引用变量为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(); =\张三\ =19; ();

Student s2 = new Student(); =\李四\

}

}

=20; ();

Student s3 = new Student(); s3=s2; ();

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

图3-1

运行结果

三、案例总结

1、Student s3 = s2这句代码的作用是将s2引用的内存地址赋值给s3,换句话说,就是使变量s3和s2引用了同一个Student对象,因此()方法和()方法打印的结果相同。通过一张内存图来演示,具体如图3-2所示。

内存s1new Student()name=张三age=19speak()new Student()s2s3name=李四age=20speak()

图3-2 内存图

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

案例3-3 类的封装 一、案例描述

1、 考核知识点

编号: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的值设为-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属性值,并调用speak()方法。

二、案例实现

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

public class Example02 { }

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

Student s1 = new Student(); = \小新\ = -30; ();

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

图3-3 运行结果

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

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

class Student {

private String name = \张三\ private int age = 19; public String getName() { }

public void setName(String n) { }

public int getAge() {

return age; name = n; return name;