最近感觉基础知识好多都生疏了,特意总结一下常用到的知识点。
final 关键字 表面含义'最终的'。
在java的使用有四种
第一种修饰类
被修饰的类不可以被继承。
例子:
Father.class
public class Father {
}
Son.class
public class Son extends Father {
}
这样写没有问题,当我把父类(Father.class)类型添加final时发现
public final class Father {
}
子类就报错了
错误信息为:
The type Son cannot subclass the final class Father
第二种修饰方法
被修饰的方法不可以被覆用(重写)
例子:
父类代码
public class Father {
public void eat()
{
System.out.println("eating");
}
}
子类代码
public class Son extends Father {
@Override
public void eat() {
// TODO Auto-generated method stub
super.eat();
}
}
当我把父类的方法eat()之前加修饰final时,程序报错
报错信息为:
Multiple markers at this line
- Cannot override the final method from Father
- overrides com.example.bb.Father.eat
第三种修饰属性
被修饰的属性需要进行初始化或必须在构造方法中赋值
例子:
public class Father {
public int age;
public void eat()
{
System.out.println("eating");
}
}
当把age属性加上修饰词final时,程序报错
报错信息是
The blank final field age may not have been initialized
修改方法有两个
public class Father {
public final int age;
public Father()
{
age = 20;//第一种方法在构造方法里赋值
}
public void eat()
{
System.out.println("eating");
}
}
第二种方法
public class Father {
public final int age = 10;//给属性初始化
public void eat()
{
System.out.println("eating");
}
}
第四种修饰变量
被修饰的变量又称为常量。只能赋值一次并且不可修改。
public class Father {
public void eat()
{
final String foodname = "apple";
System.out.println("eating"+foodname);
}
}
当我再给变量foodname赋值时 程序报错
报错信息是:
The final local variable foodname cannot be assigned. It must be blank and not using a compound
assignment
好啦关于final的知识就介绍到这啦。
欢迎大神批评指正的。