Java访问修饰符
1- Java修饰符2- 覆盖访问修饰符3- 私有访问修饰符4- 私有构造函数5- 默认访问修饰符6- 受保护访问修饰符7- 公共访问修饰符8- 覆盖方法
1- Java修饰符
在Java有两种类型的修饰符: 访问修饰符 和 非访问修饰符。
Java访问修饰符指定数据成员,方法,构造函数或类的可访问性(范围)。
有4种类型的Java访问修饰符:
- private
- (Default)
- protected
- public
有许多非访问修饰符,如 static, abstract, synchronized, native, volatile, transient 等. 在这里,我们将学习访问修饰符。
2- 访问修饰符覆盖
下表显示如何使用访问修饰符的概述说明。
访问修饰符 | 类内访问 | 包内访问 | 包外仅子类访问 | 包外访问非子类 |
---|---|---|---|---|
private | Y | N | N | N |
Default | Y | Y | N | N |
protected | Y | Y | Y | N |
public | Y | Y | Y | Y |
你可以看到更多的详细信息请按照下面的例子:
3- private访问修饰符
私有(private)访问修饰符只能在类中访问。
你不能访问私有字段在定义类之外。 Java将在类的编译时通报错误。
4- private构造函数
如果你创建一个类,并有一个私有的构造函数,则无法从私有构造函数来创建这个类的对象。让我们看一个说明性的例子:
5- Default访问修饰符
如果你声明一个字段,方法,构造函数,但你不写明访问修饰符,这意味着这将使用默认(default)的访问修饰符。
默认(default)的访问修饰符的访问范围是在包里面。
// A class with default access modifier // (Not public). class MyClass { // A field with private access modifier. private int myField; // A field with default access modifier. // (not specified public, protected, private). String myField2; // A method with default access modifier. // (not specified public, protected, private). void showMe() { } }
在同一个包,你可以访问成员的访问修饰符是默认(default)
而且,不能访问包之外的东西,即使它们是一个子类。
注意:
对于接口,当声明一个字段或方法,需要声明为public。也可以声明默认模式,而Java中的接口默认认为 public。public interface MyInterface { // This is a field, you can not declare private or protected. public static int MY_FIELD1 = 100; // This is a field with default access modifier // But Java considering this is a public. static int MY_FIELD2 = 200; // This is a method, with default access modifier // But Java considering this is a public. void showInfo(); }
6- protected访问修饰符
保护(protected)访问修饰符作用范围是包内和包外,但要通过继承才能访问。
保护(protected)访问修饰符可以在数据成员,方法和构造上应用。但它不能在类上应用。
7- public访问修饰符
public访问修饰符是允许所有访问。它具有比所有其他修饰符的访问范围更宽。
8- 覆盖方法
你可以以超类的相同方法名称和参数来覆盖超类的方法。不过,不能让这种方法的访问范围有所限制。
在上面的图示:
- Cat类是从Animal类扩展并覆盖move()方法; 从protected到public模式重写变更的访问范围。这是有效的。
- Mouse类从Animal 类扩展并覆盖move()方法; 覆盖加入更改从protected到默认模式的范围。这减少了原来的方法的访问的范围,因此它是无效的。