java继承与多态(4)final关键字、四种权限修饰符

1 final

常用与修饰类、方法、局部变量、成员变量

1.1 修饰类

public final class MyClass

这个类不能有任何子类,方法也就无法被覆盖重写

1.2 修饰方法

public final void method() {}

修饰的方法为最终方法,不能被子类覆盖重写
注意:对于类、方法来说,abstract和final关键字不能同时使用

1.3 修饰局部变量

		final int num2 = 10;

        final int num3;
        num3 = 20;

赋值后无法修改,无法被再次赋值,只要保证有唯一一次赋值即可
注意:

  • 对于基本类型来说,不可变指的是变量中数据不可变
  • 对于引用类型,不可变指的是其中保存的地址值不可改变
        Student stu1 = new Student("LC");
        System.out.println(stu1);
        System.out.println(stu1.getName());
        stu1 = new Student("Egoist");
        System.out.println(stu1.getName());
        System.out.println(stu1); // 地址值改变
        System.out.println("==============");

        final Student stu2 = new Student("LC");
//        stu2 = new Student("Egoist"); // 编译报错,其中的地址不可不改变
        System.out.println(stu2.getName());
        stu2.setName("Egoist");
        System.out.println(stu2.getName()); // 只有地址值不可改变,地址所指的对象可变

1.4 修饰成员变量

final成员变量同样不可变

  1. 成员变量必须有默认值(初始值)也算赋值,所以必须手动赋值
  2. final的成员变量,要么直接赋值,要么通过构造方法赋值
  3. 必须保证类中所有重载的构造方法,都会对final的成员变量重新赋值,否则只能直接赋值

2 权限修饰符

java中有四种权限修饰符:public > protected > (default)> private

权限 public protected (default) private
同一个类(自己访问自己) 1 1 1 1
同一个包不同类() 1 1 1 0
不同包子类 1 1 0 0
不同包非子类(陌生人) 1 0 0 0

同一个类:
在这里插入图片描述
同一个包:
在这里插入图片描述
不同包的子类:
在这里插入图片描述
不同包的非子类:
在这里插入图片描述

发布了90 篇原创文章 · 获赞 4 · 访问量 1447

猜你喜欢

转载自blog.csdn.net/weixin_44145258/article/details/103356595