网站建设好发信息网,wordpress 闪图不,电子商务营销案例分析,招商网站建设哈喽#xff0c;小伙伴们大家好#xff0c;我是兔哥呀#xff0c;今天就让我们继续这个JavaSE成神之路#xff01;
这一节啊#xff0c;咱们要学习的内容是Java所有final关键字。
之前呢#xff0c;我们学习了继承#xff0c;这大大提高了代码的灵活性和复用性。但是总…哈喽小伙伴们大家好我是兔哥呀今天就让我们继续这个JavaSE成神之路
这一节啊咱们要学习的内容是Java所有final关键字。
之前呢我们学习了继承这大大提高了代码的灵活性和复用性。但是总有一些时候我们的类不希望被子类继承成员属性不希望被子类修改成员方法不希望被子类重写那该怎么办呢
final关键字相当于“最终”或“不可更改”在生活中比如学校期末考试的成绩是“最终”的不可再更改。
同样在java程序中final关键字也表示最终用于修饰变量、方法和类其含义是指不可更改即所修饰的类不可以被继承修饰的方法不可以被重写修饰的变量为常量值不可以改变。
1.final 修饰类
final 修饰类代表这个class不允许被继承。
注意class左边的访问修饰符比如public和final的位置可以互换。不过我们一般习惯于讲final写在public后面。
比较典型的就是String类它就是final的。
public final class Stringimplements java.io.Serializable, ComparableString, CharSequence {}为什么呢 保证String类的安全性防止被其他类继承重写String类的方法破坏String类的语义导致程序出错。 String类是一个特殊的类它的内部实现了字符串的指针可以优化字符串的操作效率如果被其他类继承就可能导致内部实现的细节被破坏影响性能。
总结下来就是String类用的很频繁而且已经写的够牛逼了你就别瞎改啦。
2.final 修饰成员方法
final 修饰成员方法就是在返回值左边加上final关键字这样一来这个方法就不能再被子类重写但是在访问权限足够的情况下依然能够被访问和调用也可以被子类继承使用。
3.final 修饰方法内的局部变量
public final void sayHello(){final String name keke;System.out.println(Hello, I am a name!);
}final可以修饰方法内的局部变量被修饰的变量不能再被修改。
PSfinal 修饰方法内的局部变量你必须在这个变量被使用前进行初始化
其实吧不仅是final的变量任何局部变量你不初始化都不能用啊。。。
String aa;
System.out.println(aa); //报错4.final 修饰成员变量
final修饰成员方法该成员方法就不能被子类重写但是仍然可以被子类继承并可以通过子类对象调用该方法。
final修饰成员变量该成员变量必须在创建对象之前进行赋值否则编译失败。 如图所示你不能声明一个final变量却不给他赋值。给final变量赋值你有两种方式一个是在构造方法中赋值另一个是在定义的时候就赋值。
从深层次讲就是你必须得在这个类的对象出现之前就给final变量赋值因此你不能在set方法中给他赋值因为你必须先new对象出来才能调用set方法啊。
5.final修饰的局部变量能改属性吗
就是说在一个方法里我定义一个局部的引用类型变量而且还设置了final那么我们可以修改它的属性值吗
public static void main(String[] args) {final Student s new Student();s.setMoney(200000);System.out.println(s.getMoney());
}答案是当然可以final修饰的变量你不能给他重新赋值但是没说不能修改其属性啊。 这样就不行咯
所以final修饰了这个变量他的地址就被定死了不能改了。
顺便说一下构造方法是不能修饰构造方法的。
6. 课后作业
1、下列关于final关键字的描述正确的是
A. final关键字可用来修饰方法
B. final关键字可用来修饰类
C. 声明为final的方法不能被重写
D. final修饰的方法可以被private修饰符修饰