类和其中的成员变量、属性、方法等,就如同一个人的所有财产一样,车只能让关系好的同事坐,房子只邀请关系很铁的朋友,而卧室这种私人的地方更不能随便让人进。同时,对于各种物品,在心中也会有不同的地位,车是可以卖的,但是房子是不能动的。所以在Java中有一系列修饰词,用来保护对类、成员变量和方法等等的访问。
修饰词分为两类,分别是访问修饰词和非访问修饰词。
文章目录
访问修饰词
(1)公有访问的修饰符-public
被声明为 public 的类、方法、构造方法和接口能够被任何其他类访问。
如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包。由于类的继承性,类所有的公有方法和变量都能被其子类继承。
public void main(String[] args){
//方法体
}
main()方法就是非常典型的公有方法,并且main()方法必须用 public 修饰,否则Java编译器无法运行该类。
(2)默认的修饰符-什么都不写
使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。默认修饰符可以修饰类。注意:是什么都不写,不是default。(修饰类时)
接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为public。和类是不一样的。
(3)受保护的修饰符-protected
protected可以修饰数据成员,构造方法,方法成员,不能修饰类。(内部类除外)
protected修饰比其他修饰符更复杂一点,“被 protected 修饰的成员对于本包和其子类可见”这句话不够全面,需分两种情况:
子类与父类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问。
子类与父类不在同一包中:那么在子类中,子类实例可以访问其从父类继承而来的 protected 方法,而不能访问父类实例的protected方法。
代码示例:
同一个包内:
package Test;
public class dad {
//父类
protected void run(){
//protected修饰的方法
System.out.println("run");
}
}
package Test;
public class son extends dad{
//同一包下子类
public static void main(String[] args) {
dad d =new dad();
d.run();
}
}
public class son {
//同一包下非继承关系的类
public static void main(String[] args) {
dad d =new dad();
d