简述final关键字的用法

1.先说以下为什么要用final吧!

继承的出现提高了代码的复用性,方便了开发,但是也出现了一些问题,有些类在描述之后,不想被继承,

或者是有些类中的部分方法是固定的,不想被子类进行重写,可是子类继承了这些方法后就可以对其

进行重写,这就需要解决的方法了.

要解决上面这个问题,就需要用到了final这个关键字了,final的意思是最终的意思,不可变.final它是个

修饰符,它可以修饰类,类的成员,以及局部变量.

2.介绍一下final的特点:

(1)final修饰的类不能够被继承,但是可以继承别的类,如下:

一个普通的类:class Test{}

一个加了final的类:final class Test2{}

另外一个普通的类: class Test3{}

final class Test2 extends Test{}  ://可以继承Test类

class Test3 extens Test2{}  ://这个是不能继承Test2的

(2)final修饰的方法不能够被继承,父类中没有被final修饰的方法,子类覆盖后可以加final.

class Test{

public final void method(){} //被final修饰的方法是能够被继承的,但是不能够覆盖

public void method2(){}

}

class Test1 extends Test{

 public final void method2(){}; //重写了父类中的方法

}

(3)final修饰的变量为常量,这些变量只能赋值一次

final int  i=20;

i=22;//这样就会赋值报错,final修饰的变量只能赋值一次

(4)引用型的变量值为对象地址值,地址值不能改变,但是地址值内的对象属性可以修改

final Person p=new Person();

Person p2=new Person();

p=p2;//final修饰的变量p,所记录的地址值不能改变

p.name="孙悟空";//可以改变p对象的name属性值

(5)修饰成员变量,需要在创建对象前赋值,否则报错。(当没有显式赋值时,多个构造方法的均需要为其赋值。)

class Test{

 final int i=188;//直接给变量赋值

 final int a;//final修饰的成员变量,需要在创建对象前赋值,否则就会报错啦

 public Test(){

   n=166;//可以在创建对象所调用的构造方法为变量赋值

}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值