您的位置:首页 > 编程语言 > Java开发

Java菜鸟学习笔记--面向对象篇(十七):Final修饰符

2013-07-30 11:43 603 查看

Final

1. final关键字

在Java中, 可以使用final关键字修饰类、方法以及成员变量。

(1).final标记的类不能被继承;

(2).final标记的方法不能被子类复写;

(3).final标记的变量即成为常量,只能被赋值一次,对于基本类型,不可变指的是值对于引用类型,不可变指的是引用地址

注意: 如果使用final来声明常量,请遵守以下常规: final标记的变量名,所有单词字母都需大写.

Final Class

A final class cannot
be subclassed.

package me.testfinal;
final class Sub{
}

class SuSu extends Sub{}//由于Sub是Final定义,所以不能继承
//cannot inherit from final Sub


Final methods

A final method cannot
be overridden or hidden by subclasses.

package me.testfinal;
class Test{

final int I=8;

final void say(){

System.out.println("Final定义 允许修改");
}

}
class Sub extends Test{

void say(){}

}
public class TestFinal{

public static void main(String[] args){

Sub your=new Sub();
your.say();//编译错误
/*输出:ay() in Sub cannot override say() in Test
*///Final定义的不能更改了

}

}


Finalvariables

A final variable can only be initialized once, either via an initializer or an assignment statement.

1.Final 常量 的定义

//Final 1.Final的变量值不能改变 2.Final 的方法不能重写 3.Final的方法不能被继承

package me.testfinal;
class Test{

final int I=8;

}

public class TestFinal{

public static void main(String[] args){

Test my=new Test();
//my.I=100;
/*输出:
cannot assign a value to final variable i
*///Final定义,不能改变这个值~

}

}


2.Final & Static Final 常量的定义

//final与static final

package me.testfinal;
class Test{

//要用大写书写常量
private final String NAME="Gino";
private final int A=100;
public final int B=80;

public static final int  C=60;
//空白final
public final int D;//必须在构造器时候初始化
Test(){

D=99;//要不在定义时候初始化,要不在构造器初始化

}
//	public static final int E;//编译错误
/*
variable E might not have been initialized
*///静态的必须在定义时候就初始化

public void set(){

D=66;
/*cannot assign a value to final variable D
D=66;*///只能在构造器或者定义的时候初始化他
}

}
public class TestFinal{

public static void main(String[] args){

Test coco=new Test();

}
}


3.Final 修饰 形参

//Final修饰参数

package me.testfinal;
class Test{

public void say(final int i){

i=9;//编译错误
/*输出:
TestFinal.java:8: error: final parameter i may not be assigned
i=9;
^
1 error
*///一旦形参接受了传过来的值,就不能在修改这个值了。这个值只读;
System.out.println(i);
}

}
public class TestFinal{

public static void main(String[] args){

Test coco=new Test();
coco.say(5);//传5过去,但是在say方法里面i的值就只能是5了
coco.say(9);//可以传9过去,同理现在say方法里面,i固定是9了

}
}


作者:YangGan

出处:http://blog.csdn.net/incyanggan

本文基于署名
2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名Yanggan(包含链接).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: