Java核心技术第四章——2.final 和 static
2018-06-18 01:48:04来源:未知 阅读 ()
final实例域
实例域(对象的属性)可修饰为final。修饰为final后,在构建对象时必须初始化这个实例域。若没有在实例域进行初始化,那么必须在每个构造器内初始化这个实例域(否则会编译错误)。
表明在后面的操作中,不能够再对它进行修改。即没有对应的域更改器(set)方法.
final修饰大部分都是应用于基本类型域(基本数据类型)或者不可变类的域(例如:String类),若修饰可变的类,可能会对读者造成混乱。
静态域与静态方法 static
静态域
static修饰的属性称为静态域,它是属于类的,所以也称为类域。每个类中只有一个这样的静态域。不管你new 多少次对象,他们都是共用这个静态域,
所以静态域是属于类的,不属于对象。可以看下图:
我把nextId设置为静态域,userId为私有数据域。在调用set方法的时候,nextId都会自增1。下面为测试方法和结果:
可以看到UserInfo类的nextId 在u1 和 u2中都是共用的。当其中一个对象修改nextId,那么其他对象的nextId也会跟着修改。
静态常量
上述所说的是静态变量,一般比较少用,用的比较多的是静态常量,就是使用final 和 static修饰的属性。
例如,Math.PI(圆周率),使用方法为 类名.属性名 静态常量一般修饰不可变的实例域。
在上一章封装性说过最好对实例域设置为私有域(private)。而final修饰的常量则没有问题,可以修饰为公有域(public)。因为final域是不可变的。
静态方法
使用静态方法时,并不需要实例化对象。使用方法为 类名.方法名 例如 UserInfo.getNextId方法
使用getNextId方法时,不使用任何的UserInfo对象,就是说不会使用到它的私有数据域,可以访问其静态域。而上述说过静态域是属于类的,不属于任何对象。
一般在下面两种情况下使用静态方法:
1.一个方法不需要访问对象的状态,所需的参数都不会使用到私有数据域。
2.一个方法只需要访问类的静态域
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash