JAVA基础——访问修饰符(public,protected,default,private)

修饰符

Java中存在很多修饰符,包括访问修饰符和非访问修饰符。
我们在这里重点讲一下访问修饰符。
访问修饰符包括public,protected,default,private。
public:: 对所有类可见。使用对象:类、接口、变量(成员变量)、方法。
protected:对同一包内的类和子类可见。使用对象:变量(成员变量),方法。(不能够外部类和接口)。
default(默认,什么都不写):对同一包内的类可见,不使用任何修饰符时默认为default。使用对象:类,接口,方法。
private:在同一类内可见。使用对象:变量(成员变量),方法。(不能修饰外部类和接口)。
修饰符
说明:子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
例:

package TestPackage2;

import TestPackage.Test;

public class TestClass extends Test {    //TestClass类继承了不同包中的Test类
    public static void main(String[] args) {
     Test test = new Test();
     TestClass testClass = new TestClass();  
     test.method();   //这里会报错,不能访问基类实例的protected方法
     testClass.method();    //可以访问子类从基类继承而来的protected方法
    }
}

如以上代码所示,test.method()不能成功编译,testclass.method()可以编译并且成功运行。

public

public被称为公有访问修饰符。
被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。
如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。
Java 程序的 main() 方法必须设置成公有的,否则,Java 解释器将不能运行该类。

protected

protected被称为受保护的访问控制符。
protected 需要从以下两个个点来分析说明:

子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;
子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法。
在接口中,接口的成员和方法不能被定义为protected。

default

default即默认,什么也不写。
什么也不写的话,只在同一个包内可见。
default不能在类中刻意的写出来,无论是修饰成员还是方法,刻意把default写出来会报错,
default在定义接口的时候可以写出来修饰接口中的方法,被default修饰的接口中的方法可以拥有方法体。
default修饰的目的是让接口可以拥有具体的方法,让接口内部包含了一些默认的方法实现。
被default修饰的方法是接口的默认方法。既只要实现该接口的类,都具有这么一个默认方法,默认方法也可以被重写。
我们可以想象这么一个场景,既实现某个接口的类都具有某个同样的功能,如果像Java8以前的版本,那么每个实现类都需要写一段重复的代码去实现那个功能,显得没有必要。这就是存在的意义。

private

私有访问修饰符是最严格的访问级别,所以被声明为 private 的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为 private。
声明为私有访问类型的变量只能通过类中公共的 getter 方法被外部类访问。
Private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页