java 对象final_java java面向对象-final类和final方法

20180319 java java面向对象-final类和final方法

为什么需要使用final修饰符:

在继承关系中,最大的弊端是破坏封装,子类能访问父类的实现细节,而且可以通过方法覆盖的形式修改实现细节。

现在想办法让子类只可以调用父类数据,不可以修改父类数据,final修饰符就是解决这个问题的。

多个修饰符之间是没有先后排列关系的。可以写成如下形式:

public static final

public final static

final本身的含义是“最终的,不可改变的”,它可以修饰非抽象类、非抽象方法和变量,注意:构造方法不能使用final修饰,因为构造方法不能被继承,肯定是最终的。

1、final修饰的类:表示最终类,表示该类不能再有子类。

eg:

final class SuperClass

{

}

class SubClass extends SuperClass

{

}

class FinalDemo

{

public static void main(String[] args)

{

System.out.println("hello");

}

}

此程序会编译报错,因为父类被final修饰了,而子类却继承了父类。

只要满足以下条件就可以把一个类设计成final类:

(1)某类不是专门为继承而设计的;

(2)出于安全考虑,类的实现细节不需改动(不准修改源代码);

(3)确信该类不会再被拓展。

java里final修饰的类很多,比如8大基本数据类型包装类和String类。

2、final修饰的方法:即最终的方法,该方法不能被子类覆盖。

eg:

class SuperClass

{

final public void doWork();

}

class SubClass extends SuperClass

{

public void doWork();

}

class FinalDemo

{

public static void main(String[] args)

{

System.out.println("hello");

}

}

此程序会编译报错,因为子类不能覆盖被final修饰的父类方法。

什么时候的方法使用final修饰:

(1)在父类中提供的统一的算法或算法骨架,就不准子类通过方法覆盖来修改,此时需要使用final修饰。

(2)在构造器中调用的方法,即初始化方法,初始化方法一般使用final修饰,这也是怕被子类覆盖。

注意:final修饰的方法子类可以调用,但是不能覆盖。

3、final修饰的变量:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值