final关键字
package JavaSE.JavaOOP.finaldemo;
/*
final 修饰 类,方法,属性
修饰 类:不能被继承
方法:不能被重写
属性:不能修改属性值
*/
public class FinalDemo1 {
//final属性
final double PI=3.1415926;
final int n;
final static int m=10;
//final static int m; 报错: Variable 'm' might not have been initialized
//final修饰的属性可以直接赋值或构造方法对其初始化
//final static 修饰的属性则必须在声明时就初始化,且被修饰的属性在内存中只有一份,被所有对象共享
//构造方法对final变量初始化
public FinalDemo1(int a){
n=a;
}
//final方法
public final void a(){
System.out.println("final修饰的方法");
}
/*
void setPI(double d){ PI=d; }
编译报错:Cannot assign a value to final variable 'PI'
final变量无法修改
*/
public void b(){
System.out.println("普通方法");
}
}
package JavaSE.JavaOOP.finaldemo;
//测试例1
public final class Test extends FinalDemo1 {
public static void main(String[] args) {
FinalDemo1 f = new Test(2);
System.out.println(f.m);//输出静态常量
System.out.println(f.PI);//输出常量
f.a();//final方法
f.b();//一般方法
}
public Test(int a) {
super(a);
}
/*
只能重写非final方法
public final void a(){}
编译报错:子类不能重写父类final方法,只能将父类final方法改为非final方法
*/
@Override//非final方法可以重写
public void b() {
System.out.println("子类方法");
}
}
运行结果:
我们看一下继承final类的效果:
package JavaSE.JavaOOP.finaldemo;
public class Test1{
//public class Test1 extends Test{
//编译报错
//final类不能被继承
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15653.html