final关键字的用法

final关键字的用法

final关键字代表最终,不可改变的。
常见的四种用法:
1.可以用来修饰一个类
2.可以用来修饰一个方法
3.可以用来修饰一个局部变量
4.可以用来修饰一个成员变量
当final关键字用来修饰一个类的时候,格式:
public final class 类名称{
//‘’‘’‘
}含义是这个类不能有子类
注意:一个类如果是final的,那么其中所有成员方法都无法进行覆盖重写(因为没有子类)
但是final关键字所在的类可以对继承的父类进行覆盖重写
当final关键字修饰一个方法的时候,这个方法就是最终方法,也就是不能覆盖重写
格式:修饰符 final 返回值类型 方法名称(参数列表){
//方法体
}
对于类,方法来说,abstract关键字和final关键字不能同时使用,因为抽象方法必需重写,然而final修饰的方法不能重写
final修饰变量时,一次赋值就不能改变,所以一次赋值终生使用,格式 final int a=100;
定义一个学生类student

public class student {
    private String name;
    public student (){
    }

    public student(String name){
        this.name=name;
    }
    public void setName(String name){
        this.name=name;
    }
    public String getName(){
        return name;
    }
}

定义一个类

public class demo01Final {
    public static void main(String[] args) {
        int num1=10;
        System.out.println(num1);
        num1=20;
        System.out.println(num1);
        final int num2=200;
        System.out.println(num2);//如果再写num2=520;这是错误的,一次赋值就不能在改变
        final int num3;
        num3=30;
        //对于基本类型来说,不可变说的是不可变的是变量当中的数据不可改变
        //对于引用类型来说,不可变说的是变量当中的地址值不可变
        student stu=new student("赵丽颖");
        System.out.println(stu);
        System.out.println(stu.getName());
        stu=new student("霍建华");
        System.out.println(stu);
        System.out.println(stu.getName());
        System.out.println("=========");
        final student stu2=new student("高圆圆");
        System.out.println(stu2);
        System.out.println(stu2.getName());
        stu2.setName("高圆圆与赵又廷");
        System.out.println(stu2.getName());
    }
}

final关键字修饰成员

对于成员变量来说,如果使用final关键字修饰,那么这个变量也照样是不可变。
1.由于成员变量具有默认值,所以用了final之后必需手动赋值,不会再给默认值了。
2.对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一
3.必须保证类当中所有重载的构造方法都最终会对final的成员变量进行赋值。

public class person {
    private final String name/*="赵又廷"*/;
    public person(){
        name="关晓彤";
    }
    public person(String name){
        this.name=name;
    }
   /* public void setName(String name){
        this.name=name;
    }*/
    public String getName(){
        return name;
    }
}

关于四种权限修饰符

Java中有四种权限修饰符public>protect>(defualt)>private
同一个类四种权限修饰符都能使用

public class Myclass {
    private int num=10;
    public int num3=30;
    protected int num2=20;
    public void method(){
        System.out.println(num);//可以访问num
        System.out.println(num2);//可以访问num,protect就是给子类使用的
        System.out.println(num3);//可以访问

    }
}

同一个包只有private不能使用
Myclass和MyAnther在一个包中

public class MyAnther {
    public void methodAnother(){
        System.out.println(new Myclass().num2);
        System.out.println(new Myclass().num3);
        //System.out.println(new Myclass().num1);不能访问
    }
}

在上一个类中创建一个子包名为sub

import demo02.Myclass;

public class Myson {
    public class MyAnther {
        public void methodAnother(){
            //System.out.println(new Myclass().num2);不能访问
            System.out.println(new Myclass().num3);
            //System.out.println(new Myclass().num1);不能访问
        }
    }
}

不同包下的子类只有public和default可以使用
不同包下非子类只有public可以使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值