final关键字的用法和权限修饰符

一. final
final常见的四种用法:
可以用来修饰一个类,方法,局部变量和成员变量

1.
当final关键字用来修饰一个类的时候

注意:
1.1 这个类不能有任何的子类(太监类),但是他可以有父类
1.2 一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写, 因为没子类

2.当final关键字用于修饰成员方法

2.1 当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能覆盖重写.

2.2 注意事项:对于类,方法来说,abstract 和final 是不能同时使用,因为矛盾。,abstract定义的抽象方法是一定要被覆盖重写的,而final就是不能覆盖重写。

3.final关键字作用于局部变量(只能赋值一次

3.1一旦使用final用来修饰局部变量,那么这个变量就不能进行更改,一次赋值,终生不变。

3.2 对于基本类型来说,不可变说的是变量当中的数据不可改变。
但是对于引用类型来说,不可变说的是变量当中的地址值不可改变,但是内容可以改变(你叫A ,你改名成B ,但是你住的地方还是不变的。)

//创建一个学生类 并且有构造方法
public class Students {
    private String name="A";

    public Students()
    {

    }
     public Students(String name)
     {
         this.name=name;
     }

    public String getName() {
        return name;
    }

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

    public static void main(String[] args) {
       final Students stu=new Students();

        System.out.println(stu.getName());  //A
      //  stu=new Students("B");  报错 因为final关键字后面的引用类型地址不可变
        System.out.println("====================");
        stu.setName("B");
        System.out.println(stu.getName());  //B  内容是可以改变的,地址不能变

    }

}

4.final关键字用于修饰成员变量

1.成员变量具有默认值值,所以用了final之后必须手动赋值,不会再给默认值了
2.对于final成员变量,要么使用直接赋值,要么通过构造方法赋值。
注意:二者只能选其一
3.如果选择第2个方法,必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值(至少有一个构造方法要对其赋值),并且删掉setter方法。

//第二种
public class Person {
    private final String name; //没有默认值
    public Person()
    {
         name="A}

    public Person(String name)
    {
       this.name = name;
    }
    
    public String getName() {
        return name;
    }
    //没有setter方法了

二.权限修饰符
public > protected> (default) > private
同一个类 (我自己) yes yes yes yes
同一个包 (我邻居) yes yes yes no
不同包子类 (我儿子) yes yes no no
不同包非子类 (陌生人) yes no no no
注意:
1.(default) 并不是default 是没写
2.在不同包 子类里面,必须是严格的一个包,如A包里面有B包 和a类 B包里面有b类,对于a类 b类来说。这是不同包

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值