APP下载

Java访问修饰符(访问控制符)

消息来源:baojiabao.com 作者: 发布时间:2024-05-08

报价宝综合消息Java访问修饰符(访问控制符)

Java 通过修饰符来控制类、属性和方法的访问许可权和其他功能,通常放在语句的最前端。例如:Java 的修饰符很多,分为访问修饰符和非访问修饰符。本节仅介绍访问修饰符,非访问修饰符会在后续介绍。

访问修饰符也叫访问控制符,是指能够控制类、成员变数、方法的使用许可权的关键字。

在面向物件程式设计中,访问控制符是一个很重要的概念,可以使用它来保护对类、变数、方法和构造方法的访问。

Java支援四种不同的访问许可权:

public:公有的

被宣告为public的类、方法、构造方法和界面能够被任何其他类访问。如果几个相互访问的public类分布在不用的包中,则需要汇入相应public类所在的包。由于类的继承性,类所有的公有方法和变数都能被其子类继承。下面的方法使用了公有访问控制:

Java程式的main 方法必须设定成公有的,否则,Java直译器将不能执行该类。

protected:受保护的

被宣告为protected的变数、方法和构造方法能被同一个包中的任何其他类访问,也能够被不同包中的子类访问。protected访问修饰符不能修饰类和界面,方法和成员变数能够宣告为protected,但是界面的成员变数和成员方法不能宣告为protected。子类能访问protected修饰符宣告的方法和变数,这样就能保护不相关的类使用这些方法和变数。下面的父类使用了protected访问修饰符,子类过载了父类的bark方法。

如果把bark方法宣告为private,那么除了Dog之外的类将不能访问该方法。如果把bark宣告为public,那么所有的类都能够访问该方法。如果我们只想让该方法对其所在类的子类可见,则将该方法宣告为protected。

private:私有的

私有访问修饰符是最严格的访问级别,所以被宣告为private的方法、变数和构造方法只能被所属类访问,并且类和界面不能宣告为private。宣告为私有访问型别的变数只能通过类中公共的Getter/Setter方法被外部类访问。private访问修饰符的使用主要用来隐藏类的实现细节和保护类的资料。下面的类使用了私有访问修饰符:

例子中,Dog类中的name、age变数为私有变数,所以其他类不能直接得到和设定该变数的值。为了使其他类能够操作该变数,定义了两对public方法,getName/setName 和 getAge/setAge,它们用来获取和设定私有变数的值。

this 是Java中的一个关键字,后面会讲到。

在类中定义访问私有变数的方法,习惯上是这样命名的:在变数名称前面加“get”或“set”,并将变数的首字母大写。例如,获取私有变数 name 的方法为 getName,设定 name 的方法为 setName。这些方法经常使用,也有了特定的称呼,称为 Getter 和 Setter 方法。

预设的:不使用任何关键字

不使用任何修饰符宣告的属性和方法,对同一个包内的类是可见的。接口里的变数都隐式宣告为public static final,而接口里的方法预设情况下访问许可权为public。

如下例所示,类、变数和方法的定义没有使用任何修饰符:

请注意以下方法继承父类中宣告为public的方法在子类中也必须为public。父类中宣告为protected的方法在子类中要么宣告为protected,要么宣告为public。不能宣告为private。父类中预设修饰符宣告的方法,能够在子类中宣告为private。父类中宣告为private的方法,不能够被继承。

如何使用访问控制符

访问控制符可以让我们很方便的控制程式码的许可权:

当需要让自己编写的类被所有的其他类访问时,就可以将类的访问控制符宣告为 public。当需要让自己的类只能被自己的包中的类访问时,就可以省略访问控制符。当需要控制一个类中的成员资料时,可以将这个类中的成员资料访问控制符设定为 public、protected,或者省略。

2019-12-04 15:59:00

相关文章