java 方法关键字_Java方法关键字“final”及其使用

当我创建复杂类型层次结构(几个级别,每个级别几个类型)时,我喜欢在实现某些接口声明的方法上使用final关键字.一个例子:

interface Garble {

int zork();

}

interface Gnarf extends Garble {

/**

* This is the same as calling {@link #zblah(0)}

*/

int zblah();

int zblah(int defaultZblah);

}

然后

abstract class AbstractGarble implements Garble {

@Override

public final int zork() { ... }

}

abstract class AbstractGnarf extends AbstractGarble implements Gnarf {

// Here I absolutely want to fix the default behaviour of zblah

// No Gnarf shouldn't be allowed to set 1 as the default, for instance

@Override

public final int zblah() {

return zblah(0);

}

// This method is not implemented here, but in a subclass

@Override

public abstract int zblah(int defaultZblah);

}

我这样做有几个原因:

>它帮助我开发类型层次结构.当我向层次结构添加一个类时,非常清楚,我必须实现哪些方法,以及我可能不会覆盖哪些方法(如果我忘记了有关层次结构的详细信息)

>根据设计原则和模式,例如模板方法模式,我认为压倒具体的东西是不好的.我不希望其他开发人员或我的用户这样做.

所以最终关键字对我来说非常合适.我的问题是:

为什么它在野外很少使用?你能告诉我一些例子/原因,最终(在类似情况下我的)会非常糟糕吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值