Java基础——final关键字
2016-05-20 00:15
447 查看
final的定义,final关键字可用于修饰类,变量和方法,意思为“无法改变的,最终,是定死了的”。
final的特性:
1.final修饰的类不能被继承
2.final修饰的方法不能被子类重写,覆盖
3.final修饰的变量(成员变量和局部变量)是常量,只能复制一次
4.当使用的数据不变时,需要定义阅读性强的名称来表示该数据,并将该数据final化。
5.final修饰的变量 名称规范是:所有字母大写(final int AGE=18;),如果是多个字母组成,则在单词之间加_分隔
class Animal{
void shout(){
System.out.println(“啊呜~”);
}
}
class Dog extends Animal{
void shout(){
System.out.println(“汪汪!”);
}
}
public class G
{
public static void main(String[] args){
Dog dog=new Dog();
dog.shout ();
}
}
如上所写编译后的结果:
![](http://img.blog.csdn.net/20160519234303482)
子类Dog将父类Animal重写了,而如果用final修饰了Animal类的话,
final class Animal{
void shout(){
System.out.println(“啊呜~”);
}
}
class Dog extends Animal{
void shout(){
System.out.println(“汪汪!”);
}
}
public class G
{
public static void main(String[] args){
Dog dog=new Dog();
dog.shout ();
}
}
运行之后就会出现
![](http://img.blog.csdn.net/20160519234814193)
如图中途中所述,子类已无法继承父类了。
如果final修饰了父类的方法,也会出现类似的报错,这个运用可以理解为(如果你父类中有5个方法,其中2个是你不想被覆盖的,就可以在方法前加final,另外不加final的三个就可以被子类的方法覆盖了,而加了的则还是原来的,不过其实这并没有什么卵用,因为只要有final,控制台就会报错,理解就好- -!)
最后就是final修饰的变量为常量,意思就是当final修饰的变量一旦被赋值了,其值就不能改变了,如果再次对其赋值就会报错,也就是他只能被赋值一次。例:
![](http://img.blog.csdn.net/20160520000405666)
上图中变量X被第二次赋值后,最终输出的值为2
那么我们在变量前加上final
![](http://img.blog.csdn.net/20160520000708401)
如图所述,被final修饰过了之后,XMA便成了最终变量,已不能再被赋值(注:final修饰的变量要大写,这是规范,跟类名首字母大写一个意思)
另外附带一提的是,如果在子类方法前加一个final,是可以覆盖父类的方法的,然并卵,知道就好!
final的特性:
1.final修饰的类不能被继承
2.final修饰的方法不能被子类重写,覆盖
3.final修饰的变量(成员变量和局部变量)是常量,只能复制一次
4.当使用的数据不变时,需要定义阅读性强的名称来表示该数据,并将该数据final化。
5.final修饰的变量 名称规范是:所有字母大写(final int AGE=18;),如果是多个字母组成,则在单词之间加_分隔
class Animal{
void shout(){
System.out.println(“啊呜~”);
}
}
class Dog extends Animal{
void shout(){
System.out.println(“汪汪!”);
}
}
public class G
{
public static void main(String[] args){
Dog dog=new Dog();
dog.shout ();
}
}
如上所写编译后的结果:
子类Dog将父类Animal重写了,而如果用final修饰了Animal类的话,
final class Animal{
void shout(){
System.out.println(“啊呜~”);
}
}
class Dog extends Animal{
void shout(){
System.out.println(“汪汪!”);
}
}
public class G
{
public static void main(String[] args){
Dog dog=new Dog();
dog.shout ();
}
}
运行之后就会出现
如图中途中所述,子类已无法继承父类了。
如果final修饰了父类的方法,也会出现类似的报错,这个运用可以理解为(如果你父类中有5个方法,其中2个是你不想被覆盖的,就可以在方法前加final,另外不加final的三个就可以被子类的方法覆盖了,而加了的则还是原来的,不过其实这并没有什么卵用,因为只要有final,控制台就会报错,理解就好- -!)
最后就是final修饰的变量为常量,意思就是当final修饰的变量一旦被赋值了,其值就不能改变了,如果再次对其赋值就会报错,也就是他只能被赋值一次。例:
上图中变量X被第二次赋值后,最终输出的值为2
那么我们在变量前加上final
如图所述,被final修饰过了之后,XMA便成了最终变量,已不能再被赋值(注:final修饰的变量要大写,这是规范,跟类名首字母大写一个意思)
另外附带一提的是,如果在子类方法前加一个final,是可以覆盖父类的方法的,然并卵,知道就好!
相关文章推荐
- Spring Resource加载资源
- Eclipse 在ubuntu桌面显示快捷启动以及解决Eclipse 在ubuntu中点击菜单栏不起作用的原因.
- java基础第三天_数组
- Java基础之比较器 Comparable和Comparator
- SpringMVC Redirect 跳转后保存Model中的数据
- Java反射获得枚举、日期、数字类型对象
- 从0开始写JavaWeb框架系列(1)从0开始写SamrtFrameWork:读取配置文件
- JUnit4
- Java方法重载
- Java数据类型
- Java中四种XML解析技术
- Ant编译Hadoop 1.0.3的eclipse-plugin插件包
- 普通java类(排序)实现Comparable接口重写CompareTo方法
- Eclipse在异常关闭后 无法启动 也没有报错信息
- Eclipse debug时 鼠标移动到变量时 自动显示变量只
- java遍历集合
- Java Web项目中读取
- Java程序优化细节
- Spring 实现国际化
- java字符集&编码问题