第11章(上)--面向对象编程(高级特性)
Posted -xuewuzhijing-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第11章(上)--面向对象编程(高级特性)相关的知识,希望对你有一定的参考价值。
1.类变量
问题引入:有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩?请使用面向对象的思想,编写程序解决。
- 思路
在main方法中定义一个变量 int totalNum = 0
当有一个小孩加入游戏就 totalNum ++;
- 使用功能传统的方法可以解决问题
不是一个oop的解决方法,破坏了oop的一个基本原则,封装
1.1.1 什么是类变量
类变量也叫静态变量/静态属性/static变量,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。这个从前面的图也可看出来。
1.1.2 如何定义类变量
定义语法:
1) 访问修饰符 static 数据类型 变量名; [推荐]
2) static 访问修饰符 数据类型 变量名;
1.1.3 如何访问类变量
类名.类变量名
或者 对象名.类变量名 【静态变量的访问修饰符的访问权限和范围和普通属性是一样的。】
推荐使用:类名.类变量名;
1.1.4 类变量使用注意事项和细节讨论
1) 什么时候需要用类变量
当我们需要让某个类的所有对象都共享一个变量时,就可以考虑使用类变量(静态变量):比如:定义学生类,统计所有学生共交多少钱。
2) 类变量与实例变量(普通属性)区别
类变量是该类的所有对象共享的,而实例变量是每个对象独享的。
3) 加上static称为类变量或静态变量,否则称为实例变量
4) 类变量可以通过 类名.类变量名 或者 对象名.类变量名 来访问,但java设计者推荐我们使用 类名.类变量名方式访问。【前提是 满足访问修饰符的访问权限和范围】
5) 实例变量不能通过 类名.类变量名 方式访问。
6) 类变量是在类加载时就初始化了,也就是说,即使你没有创建对象,只要类加载了(到方法区),就可以使用类变量了。
7) 类变量的声明周期是随类的加载开始,随着类消亡而销毁。
2.类方法
1.1.1 类方法基本介绍
1) 类方法也叫静态方法 。
形式如下:
访问修饰符 static 数据返回类型 方法名(){ } 【推荐】
static 访问修饰符 数据返回类型 方法名(){ }
1.1.2 类方法的调用:
使用方式: 类名.类方法名 或者 对象名.类方法名 【前提是 满足访问修饰符的访问权限和范围
3.类方法和普通方法加载到方法区的比较
这就是为什么静态方法不能使用非静态属性
4.类方法经典的使用场景
- 当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率。
比如:工具类中的方法 utils
Math类、Arrays类、Collections类
- 小结
在程序员实际开发,往往会将一些通用的方法,设计成静态方法,这样我们不需要创建对象就可以使用了.
5.类方法的注意事项和使用细节
以上是关于第11章(上)--面向对象编程(高级特性)的主要内容,如果未能解决你的问题,请参考以下文章