final关键字

final关键字:可以修饰属性 方法 类。




final修饰类:当一个类被final所修饰 时,表示该类是一个终态类,这个类不能被继承。
public class FinalTest {
public static void main(String[] args) {
F f = new F();
}
}
final class E {//表示该类不能被继承

}
class F extends E {


}


final 修饰方法:当一个方法被final 所修饰时,表示该方法是一个终态方法,即该方法不能被重写(Override)


public class FinalTest {
public static void main(String[] args) {
H h = new H();
h.output();
}
}
class G {
public final void output() {当一个方法被final 所修饰时,表示该方法是一个终态方法,即该方法不能被重写(Override)
System.out.println("g");
}
}
class H extends G {
public void output() {
System.out.println("h");
}
}




final修饰属性:当一个属性被final 所修饰时,表示该属性不能被改写。
public class FinalTest {
public static void main(String[] args) {
People people = new People();
//people.age = 20;
//people.address = new Address
people.address.name = "shanghai";
}
}
class People {
//final int age = 10;//表示age是常量,不能被改写
final Address address = new Address;
}
class Address {
String name = "beijing";
}
当final 修饰一个原生数据类型时,表示该原生数据类型的值不能发生变化 ,

如果final修饰一个引用类型时,表示该引用类型不能再指向其它对象,但该引用所指向的对象的内容是可以发生变化的。






final如果修饰一个属性,这个属性必须赋初值。
public class FinalTest {
final int a; 
}




正确
public class FinalTest {
final int a; 
public FinalTest {
a = 0;
}
}
错误1
public class FinalTest {
final int a = 0; 
public FinalTest {
a = 0;
}
}
错误2
public class FinalTest {
final int a; 
public FinalTest {
a = 0;
}
public FinalTest(int a) {

}
}
正确
public class FinalTest {
final int a; 
public FinalTest {
a = 0;
}
public FinalTest(int a) {
this.a = a;
}
}


对于final 类型成员变量,一般来说有两种赋初值方式:
1~在声明final 类型的成员变量时就赋上初值。
2~在fnjefinal类型的成员变量时不赋初值,但在类的所有构造方法中都为其赋上初值。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值