java中的final总结
2015-11-15 16:49
661 查看
Java关键字final有最终的,不可改变的含义,它可以修饰非抽象类、非抽象类成员方法和变量。
![](http://images2015.cnblogs.com/blog/446425/201511/446425-20151115161733228-1301984262.png)
报错:类"TestFinal"要么是abstract,要么是final的,不能两个都是.
1.final修饰的类就是终极的.不能被其他类继承,就不可能有子类.
2.由于final类没有子类,其中的方法不可能被覆盖,因此,final类中的
所有方法和变量都是final的,并不需要明确地将某个方法声明为final.
3.final方法不能被子类的方法覆盖,但可以被继承。
下面我们来重写这个被final修饰过得方法.
![](http://images2015.cnblogs.com/blog/446425/201511/446425-20151115163628072-1437314868.png)
编译时就报错了.
由此我们联想到私有方法也是不可被继承的.
因为系统把私有成员当做final处理.我们也可以将一个私有成员表示成fianl的.但是这没什么意义.
4. final成员变量表示常量,只能被赋值一次,赋值后值不再改变,如果强行赋值会出现编译错误。
![](http://images2015.cnblogs.com/blog/446425/201511/446425-20151115164515509-668925810.png)
5.final不能用于修饰构造方法.构造方法不存在被继承,也就不可能被重写,也就是说构造方法本身就是最终的,没必要使用final标示.
![](http://images2015.cnblogs.com/blog/446425/201511/446425-20151115161733228-1301984262.png)
报错:类"TestFinal"要么是abstract,要么是final的,不能两个都是.
1.final修饰的类就是终极的.不能被其他类继承,就不可能有子类.
2.由于final类没有子类,其中的方法不可能被覆盖,因此,final类中的
所有方法和变量都是final的,并不需要明确地将某个方法声明为final.
public final class TestFinal{ public static final int I=1;//final类中的数据成员可以是final的 protected int j;//final类中的数据成员可以不是final的 public void f(){}//final类中的方法是final的,可以不明确声明 public final void g(){}//final类中的方法可以声明为final的,不过没什么意义 }
3.final方法不能被子类的方法覆盖,但可以被继承。
public class TestFinal extends FinalOnMethod{ public static void main(String[] args) { TestFinal tFinal=new TestFinal(); tFinal.One(); } } class FinalOnMethod{ public final void One(){ System.out.println("hello,我是一个final方法,但是我所在的类,没有final修饰哦!!!!!!!!!!!!!"); } }
下面我们来重写这个被final修饰过得方法.
![](http://images2015.cnblogs.com/blog/446425/201511/446425-20151115163628072-1437314868.png)
编译时就报错了.
由此我们联想到私有方法也是不可被继承的.
因为系统把私有成员当做final处理.我们也可以将一个私有成员表示成fianl的.但是这没什么意义.
4. final成员变量表示常量,只能被赋值一次,赋值后值不再改变,如果强行赋值会出现编译错误。
![](http://images2015.cnblogs.com/blog/446425/201511/446425-20151115164515509-668925810.png)
5.final不能用于修饰构造方法.构造方法不存在被继承,也就不可能被重写,也就是说构造方法本身就是最终的,没必要使用final标示.
相关文章推荐
- 设计模式实例学习-观察者模式
- 菜鸟级Spring AOP开发简介
- spring源码目录模块的作用
- android studio和eclipse中获取sha1码
- java 重定向和转发的区别
- Java 二叉树创建遍历
- Java的抽象类详解
- Java虚拟机工作原理详解
- 【Java】著名的单元测试框架JUnit及其生命周期使用
- eclipse插件link安装方式
- javaweb学习
- Java Web如何操作Cookie的添加修改和删除
- Java入门(三)static关键字
- Java应用程序中的内存泄漏及内存管理
- 字节与字符及java中char与数据库中char的区别
- struts2中的namespace
- java读XML
- Java类的连接与初始化
- Java 注解入门实例 && 注解传参
- Java宝典