【Java】基础19:final修饰符和权限修饰符

00封面.png

​前几天学过方法重写,也就是说,一个类继承至父类,子类可以将父类的方法重写。

但有的时候父类的方法要求固定,不能被更改。

该怎么办?

这就得学到一个新的修饰符了。

一、final修饰符

final,翻译成中文就是“不可更改的 ”。

顾名思义,它是一个修饰符,用于修改不可更改的内容。

  • 被final修饰的类:不能被继承。

  • 被final修饰的方法:不能被重写。

  • 被final修饰的变量:不能被重新赋值。

  • 被final修饰的常量:名称一般都有书写规范,所有字母都大写。多个单词之间,使用下划线进行分割。

1.修饰类和方法

image

①final修饰类,类不能被继承。

既然不能被继承,那final类里的方法也无法被重写。

②final修饰方法,方法不能被重写。

非final类中,也可以存着final方法。

注:其中final方法是可以被重载的(同名不同参)

2.修饰局部变量

image

③用final修饰基本数据类型局部变量。

只能赋值一次,不能再更改了,编译会报错。

基本数据类型不能更改的是值。

④用final修饰引用数据类型局部变量。

只能创建对象一次,不能再次创建对象,编译会报错。

引用数据类型不能更改的是对象的地址。

该对象的值是可以通过对应的setXXX()方法更改的。

3.修饰成员变量

成员变量和局部变量有一个区别在于:

成员变量是有默认值的。

所以用final修饰成员变量,它就不再有默认值了,必须一步直接赋值 。

初始化方式有两种,只能二选一:

image

⑤直接初始化赋值。

⑥构造方法赋值。

注意:用setXXX()方法无法赋值。

二、权限修饰符

public这个关键字太常见了,它就是一个权限修饰符。

在Java语言里面有四种权限修饰符。

其实看字面意思也蛮好理解的:

①public:公共的。

  • 可以修饰类、成员变量、成员方法、构造方法。

  • 被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包。

  • 一般情况下,类的构造方法、成员方法会使用public,方便创建对象和调用方法。

②protected:受保护的。

  • 可以修饰成员变量,成员方法,构造方法,不能修饰类(此处指外部类、内部类不考虑)。

  • 被protected修饰的成员,只能被同包下的其他类访问。

  • 如果不同包下的类要访问被protected修饰的成员,这个类必须是其子类。

③default:默认的。

  • 可以修饰类,成员变量,成员方法,构造方法。

  • 若是没有加权限修饰符,其访问能力就是default权限。

  • 被默认权限修饰后,其只能被本类以及同包下的其他类访问。不同包的子类都不行。

④private:私有的。

  • 可以修饰成员变量,成员方法,构造方法,不能修饰类(此处指的是外部类,内部类不加以考虑)。

  • 被private修饰的成员只能在其修饰的本类中访问,在其他类中不能调用,但是被private修饰的成员可以通过set和get方法向外界提供访问方式 。

  • private类型的方法都默认为是final方法,因而也不能被子类重写

权限是从大到小的:

public > protect >default>private

三、abstract和static修饰符

修饰符除了权限修饰符和final修饰符,常见的还有abstract和static修饰符。

这两个关键字前面都学过,做一个回顾:

1.abstact修饰类

表明这是一个抽象类。

抽象类不能创建对象生成实例,需要使用子类实例化

2.abstact修饰方法

表明这是一个抽象方法,只有方法名,没有方法体。

需要子类重写。

3.static修饰方法

静态方法只能访问静态变量。

静态方法可以用类名直接调用。

4.static修饰变量

也可称为类变量,局部变量不能被static修饰。

也可以用类名直接调用。

5.static修饰代码块

随着类的加载而加载一次,相当于初始化赋值。

总结:

image

你可能感兴趣的:(【Java】基础19:final修饰符和权限修饰符)