第一范文网 - 专业文章范例文档资料分享平台

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

来源:用户分享 时间:2025/9/30 16:41:01 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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

当多个对象存储的数据相同时,可以使用静态变量的方式存储。例如,有一个Student类具有name、className属性,请根据该类创建出三个Student对象,并将这些对象的className值都设置为“三年级二班”。

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

1) 定义Student类,并在类中定义name和className属性。

2) 编写测试类Example08,在main()方法中创建三个学生对象,并分别为这些对象的name和

className属性赋值,然后输出这些对象的name和className值。 3) 对Student类进行修改,将className定义为静态变量。

4) 修改测试类,在main()方法中使用Student.className = “三年级二班”语句为静态变量

className进行赋值,然后输出这些对象的name和className值。

为了更好地理解Student类中静态变量className和Student实例对象的关系,下面通过一个图例进行演示,如图3-11所示:

Student{className三年级二班Student实例对象{names1names2names3

图3-11 静态变量与实例对象的关系

二、案例实现

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

class Student{ }

String name; String className;

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

public class Example08 {

public static void main(String[] args) {

Student s3 = new Student(); s3.name = \王五\

s3.className = \三年级二班\Student s1 = new Student(); s1.name = \张三\

s1.className = \三年级二班\

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

s2.className = \三年级二班\

13 / 25

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

System.out.println(\我的名字是\来自\

}

}

System.out.println(\我的名字是\来自\System.out.println(\我的名字是\来自\

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

图3-12 运行结果

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

class Student { }

String name;

static String className;

4、对Example08类进行修改,代码如下所示:

public class Example08 { }

}

System.out.println(\我的名字是\来自\System.out.println(\我的名字是\来自\System.out.println(\我的名字是\来自\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 = \王五\

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

图3-13 运行结果

14 / 25

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

三、案例总结

1、本案例中,三个Student对象的className属性值均为“三年级二班”,对于这样的相同数据,没有必要在每个对象中都开辟一块空间存储,完全可以在内存中只用一块空间存储,并被一个类的所有实例对象所共享。在Java中提供了一个static关键字,使用static关键字修饰的成员变量称为静态变量,静态变量能被该类所有实例对象共享。

2、静态变量可以使用“类名.静态方法名”的方式访问,也可以通过“对象引用变量.静态方法名”的方式访问,例如本例中的静态变量className,通过Student.className或者s2.className这两种方式访问都是可以的,不过更推荐使用前一种方式。

3、思考一下:定义一个Person类,在类中定义两个String类型的成员变量name和nationality(国籍),变量nationality使用static关键字修饰为静态变量,其值为“中国”。

定义Example09类,在类的main()方法中创建Person类的两个实例对象,并打印出这两个对象的姓名和国籍。 (1)定义Person类,代码如下所示:

class Person { }

String name;

static String nationality = \中国\

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

public class Example09{ }

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

Person lily = new Person(); lily.name = \丽丽\

Person lucy = new Person(); lucy.name = \露西\

System.out.println(lily.name + \的国籍是\System.out.println(lucy.name + \的国籍是\

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

图3-14 运行结果

案例3-9 静态方法中访问类的成员 一、案例描述

1、 考核知识点

15 / 25

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

编号:

名称:静态方法

2、 练习目标

? 了解在静态方法中只能访问类的静态成员,而不能访问非静态成员。

3、 需求分析

在程序中经常会调用方法,但静态方法之间、静态方法和非静态方法之间,它们是否能够互相调用呢?请编写一个测试类,在类中定义若干个静态方法和非静态方法,通过方法之间的相互调用,演示静态方法和非静态方法的调用情况。

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

1)编写Example10类,在类中定义两个静态方法staticMethod1()、staticMethod2(),两个非静态方法nonStaticMethod1()、nonStaticMethod2()

2)在Example10类中,针对定义的四个方法进行互相调用,观察调用情况。

二、案例实现

1、定义Example10类,在类中定义上述的四个方法和一个main()方法,代码如下所示:

public class Example10{ }

static void staticMethod1() { }

static void staticMethod2() { }

void nonStaticMethod1() { }

void nonStaticMethod2() { }

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

System.out.println(\非静态方法2\System.out.println(\非静态方法1\System.out.println(\静态方法2\System.out.println(\静态方法1\

2、对静态方法staticMethod1()进行修改,在方法中访问静态方法staticMethod2()。在main()方法中调用静态方法staticMethod1(),代码如下所示:

public class Example10{ static void staticMethod1() {

}

static void staticMethod2() { }

void nonStaticMethod1() {

System.out.println(\非静态方法1\System.out.println(\静态方法2\System.out.println(\静态方法1\staticMethod2();

16 / 25

搜索更多关于: 第3章-面向对象(上)-补充案例 的文档
第3章-面向对象(上)-补充案例.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0ni841pd6g5s23r4b01m9s4tl8lgyq00e70_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top