final变量、方法、类

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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值