final:
final 可以修饰类、方法、变量
final 修饰的类不可以被继承
final 修饰的方法不可以被覆盖
final 修饰的变量是一个常量,只能被修饰一次
内部类只能访问被final修饰的局部变量
继承的弊端:
如下代码:
class father { void show() { System.out.println("ni hao ");//父类的方法已经调用了底层系统 } } class son extends father { void show() { System.out.println(" no ");//子类一覆盖,父类原有的功能挂了 } } public class Main { public static void main(String[] args) { son s = new son(); s.show(); } }
故:继承有弊端,它打破了封装性。
所以针对继承的弊端,采用final关键字,final class father{},那么father类就无法被继承
但是想要继承类,但是不想让其中某些方法被继承,那么就用final修饰方法,那么方法就无法被继承
还有final修饰的变量,final x = 9变成一个常量,也就是把该变量固定住了,类似于const int x = 9;
且只能被赋值一次
class father { void show() { final int x = 9; x = 10;//编译失败 System.out.println(x); } }
class father { void show() <span style="white-space:pre"> </span>{ final int x;//编译失败,因为没有初始化,对于成员而言,有默认初始化值,而final固定的是显示初始化值 System.out.println(x); } }
class father { void show() { final int x; x = 10; System.out.println(x); x = 10;//编译失败 } }
用final 修饰的不行变化的变量,在开发中常用
变量的书写规范
java中书写格式:
变量:如果由多个单词所组成,第一单词首字母小写,从第二个单词首字母开始每个单词首字母大写,书写格式和函数一样
常量:所有字母都大写,如果单词不唯一,单词与单词之间用下划线连接 double MY_PI;
如果某个值固定不变,就没必要每个对象都知道,那么这个数据就说明可以是被共享的
class father { static final int x = 8;//所以可以用static修饰,成员如果被final了,一般都会加static void show() { System.out.println(x); } }
这样就可以直接被类名使用
class father { static final int x = 8; } public class Main { public static void main(String[] args) { System.out.print(father.x); } }
如果只在本类中使用
class father { private static final int x = 8; }
全局常量
class father { public static final int x = 8; }
为什么要用final修饰变量,在程序中如果一个数据是固定的,那么直接使用这个数据就可以了,但是这个数据的阅读性差,这个数据还要屡次写,一旦要更改数据,书写起来较麻烦,所以加final 给这个数据起个名字,这个名字就代表了这个数据,书写方便,方便修改
时间: 2024-10-01 17:30:39