一些java修饰符的解释

final 实例域

将实例域定义为final意味着构建对象时必须初始化它,即构造器执行后这个域必须有值,且后续不可以进行修改。

final修饰符大都用于基本类型域或不可变类(类中的每个方法都不会修改对象,例如String类)的域。

对于可变类,使用final仅仅表示变量对于对象的引用不会发生变化,但是对象可以调用自己的方法来改变,从而容易产生混淆。

static 静态域和静态方法

在绝大多数面向对象程序设计语言中,静态域被称为类域。static只是沿用了C++的叫法,没有实际意义。

静态域(静态变量)

每个类中只可以有一个这样的域的实例(就是说,所有的对象共享一个静态域)。

静态变量可以直接获得,比如Employee.numOfEMP

静态常量

常量名全大写

定义的静态常量可以直接获得,比如Math.PI可以获得静态常量PI的值。

静态常量可以设计为public,因为没有对象可以修改它。

静态方法

静态方法是一种不能向对象实施操作的方法,也即没有隐式的参数。

隐式参数和显式参数

显式参数也即括号中的参数,隐式参数为调用方法的对象。

比如,AProject.getSth(a,b),a,b是显式参数,AProject是隐式参数。

静态方法直接使用类名.方法名来调用(实际上,也可以通过对象名.方法名来调用,但实际上和对象毫无关系,容易造成混淆)。

两种情况使用静态方法:
1. 方法不需要对象的状态,所需参数全部为显式参数提供。
2. 方法只需要访问类的静态域,例如Emplyoyee.getNextId,即静态域。

静态方法的另一个应用:工厂方法

工厂方法,即使用静态方法来构造对象。

NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

currencyFoematter.format(10);

使用静态方法而不是构造器的原因:
1. 无法命名构造器。而静态方法可以有不同的名字。
2. 使用构造器无法改变所构造的对象类型,而静态方法可以返回不同的对象,比如子类。

另一个常见的静态方法:main方法

每一个类都可以有一个main方法,这是常用于单元测试的技巧。

可以在所有需要进行单元测试的类添加main方法,执行的时候可以选择执行哪一个main。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值