定义

private(私有的)无法访问:使用private关键字,就意味着被声明的成员或方法,除了本类,其他任何类都无法访问。

public(公共的)接口访问权限:使用public关键字,就意味着被声明的成员或方法对所有类都是可以访问的。

protected(受保护的)继承访问权限:使用protected关键字,就意味着被声明的成员或方法,在子类以及相同包内的其他类都可以访问的。

default(默认的)包访问权限:即不写任何关键字,就意味着相同包内的其他类(包括子类)可以访问,包外都不可以访问。

一、为什么不能用private修饰Java外部类?

因为如果使用private修饰Java外部类,那么这个类不能创建实例,这个类的属性和方法不能被访问,那么创建这个类毫无意义,所以不能使用private修饰Java外部类。

二、为什么不能用protected修饰Java外部类?

举个例子,如果类A用protected修饰,与类A不同包的类B想要访问类A的话,类B就必须是继承类A的(或者说类B必须为类A的子类),但是类B继承类A的前提又是类B可以访问到类A,有点绕对吧,仔细想想会发现这里是冲突的,其实这就说明了为什么不能用protected来修饰外部类。再说,protected是用来表示在继承关系中的访问权限的,在同一个包和子类中都可以访问,因为继承就是为了拥有父类的属性和方法,所以protected是用于修饰类的方法和属性的,也就是说,我想要这个类的属性和方法可以被任何子类继承,我就用protected。

三、不让外界创建对象有几种解决方案

第一种:构造方法私有化

     private 修饰的构造方法,使外界不能创建本类对象

第二种:抽象类

     abstract修饰成抽象类,抽象类不可被实例化,不能创建对象

第三种:接口是更加严格的抽象类,所以也不能被实例化,不可创建对象

                      ①构造方法私有化

java无法访问文件 java无法访问类_抽象类

                      ②抽象类 

java无法访问文件 java无法访问类_抽象类_02

                      ③接口

java无法访问文件 java无法访问类_外部类_03