您的位置:首页 > 其它

final变量、方法、类

2016-06-06 16:07 274 查看
final关键字用于声明变量,该变量被设定,就不能在改变变量的值。通常final定义的变量为常量。

比如:fianl double PI=3.14;

此时,它的值就是3.14,程序不能再次为final赋值.

final关键字定义的变量必须在声明时对其进行赋值操作,final除了可以修饰基本数据类型的常量,还可以修饰对象引用.final可以修饰数组,被修饰的数组被看作一个对象来引用,一旦被final修饰的对象,只能恒定指向一个对象,无法改变以指向另一个对象.既是static又是final的字段只占据不能改变的储存空间.

package com.java.six;
import java.util.Random;
public class FinalStaticData {
private static Random random=new Random();//实例化一个Random对象
//随机产生0~10之间的随机数并赋值定义为final的a1
private final int a1=random.nextInt(10);
//随即产生0~10之间的随机数定义为static final的a2
private static final int a2=random.nextInt(10);
private  static void main(String[]args){
FinalStaticData fdata=new FinalStaticData();//实例化一个对象
//调用定义为final的a1
System.out.println("重新实例化对象调用a1的值:"+fdata.a1);
//调用定义为final的a2
System.out.println("重新实例化对象调用a1的值:"+fdata.a2);
//实例化另一个对象
FinalStaticData fdata2=new FinalStaticData();
System.out.println("重新实例化对象调用a1的值:"+fdata.a1);
System.out.println("重新实例化对象调用a2的值:"+fdata.a2);
}
}


final方法

1.final的方法不能被重写.

2.final类型可以防止子类修改该类的定义与实现方式,同时定义为final方法的执行效率要高于非final方法.

3.被定义为private修饰符,子类无法访问该方法,自然无法覆盖该方法,所以一个定义为private的方法隐式被指定为final类型.

class Parents{
private final void doit(){
System.out.println("父类.doit()");
}
final void doit2(){
System.out.println("父类.doit2()");
}
final void doit3(){
System.out.println("父类.doit3()");
}
}
class Sub extends Parents{
public final void doit(){//在子类中定义一个doit()方法
System.out.println("子类.doit()");
}
// final void doit2(){
//     System.out.println("子类.doit2()");
//  }
final void doit3(){
System.out.println("子类.doit3()");
}
}
public class FinalMeyhod{
public static void main(String[]args){
Sub s=new Sub();//实例化
s.doit();//调用doit()方法
Parents p=s;//执行向上转型操作
p.doit();
p.doit();
}
}


final类

1.final的类不能被继承

语法: final 类名{ }

如果将类设置为final形式,则类中的所有方法都会被隐式设置为final形式,但是final类中的成员变量可以被定义为final或final形式.

final class FinalClass{
int a=3;
void doit(){
}
public static void main(String args[]){
FinalClass f=new FinalClass();
f.a++;
System.out.println(f.a);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  final