标签:
使用场景:(1).继承中,父类中的某个方法不允许子类通过继承来覆写,可以在父类中用final来修饰该方法。(2).final除了修饰方法、还可以用来修饰类和变量。
修饰类:final修饰的类是最终类,不能再有子类,即不能再有类继承该类。
修饰方法:final修饰的方法不能被覆写。
修饰变量:final修饰的变量是常量,只能赋值一次,赋值后不能再被修改。
class Father
{
public void display()
{
System.out.println("father");
}
}
class Son extends Father
{
public void display()
{
System.out.println("son");
}
}
public class Demo {
public static void main(String[] args) {
Son son=new Son();
son.display();
}
}
在上面的例子中,如果不对父类的方法display使用static,则子类可以继承父类的方法并且覆写该方法,这个时候例子的结果输入为son.
但是如果在该例子中对父类方法使用static public static void display(),则方法报错,因为使用static之后,父类的方法不允许子类覆写
Final修饰变量例子:
class Father
{
public int num=10;
public void display()
{
System.out.println("father");
}
}
class Son extends Father
{
public void display()
{
num=100;
}
}
public class Demo {
public static void main(String[] args) {
Son son=new Son();
System.out.println(son.num);
}
}
上面的例子中,输入结果为100,子类对父类中的变量进行了重新赋值。是有效的。
但是如果把父类中的num添加关键字final变成 public final int num=10则例子中会报错,无法执行。原因在于父类把num变量已经定义为final,声明该num变量为常量,不可以再修改。(final定义的变量是一种自定义的常量)
标签:
原文地址:http://www.cnblogs.com/positiveh/p/5561637.html