总体介绍
Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不带任何修饰符。
private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。
下面用表格的形式来展示四种访问权限之间的异同点,这样会更加形象
不写时候默认为default
当前类 | 同包 | 子类 | 不同包 | |
private | Y | |||
default | Y | Y | ||
protected | Y | Y | Y | |
public | Y | Y | Y | Y |
详细介绍
1.私有变量和私有方法
用关键字private修饰的成员变量和方法称为私有变量和私有方法。如:
class Shiyou
{
private float f(float a,float b)
{}
}
对于私有成员变量或方法,只有在本类中创建该类的对象时,这个对象才能访问自己的私有成员变量和类中的私有方法。
2.共有变量和共有方法
用public 修饰的成员变量和方法称为共有变量和共有方法
class Gongyou
{public float weight;
public float f(float a,float b)
{}
}
当在任何一个类中用Gongyou创建对象后,该对象都能访问自己的public 变量和public 方法。
3.友好变量和友好方法
不用private public protected修饰的成员变量和成员方法都被称为友好变量和友好方法
class Friendly
{
float weight;
float f(float a,float b)
{}
}
当在另外一个类中用类Friendly创建了一个对象后,如果这个类和Friendly类在同一个包中,那么该对象能访问自己的友好变量和友好方法。在任何一个与Friendly同一个包中的类中,也可以通过Friendly类的类名访问Friendly类的类友好成员变量和类友好方法。
如果在源文件中用import语句引入了另为一个包中的类,并用该类创建了一个对象,那么该类的这个对象不能访问自己的友好变量和友好方法。
4.受保护的成员变量和方法
用protected修饰的成员变量和成员方法被称为受保护的成员变量和成员方法
Class Test
{
protected float weight;
protected float f(float a,float b)
{
}
}
当在另外一个类中用类Test创建了一个对象后,如果这个类与类Test在同一个包中,那么该对象能访问自己的protected 变量和protected方法。在任何一个与Test同一个包中的类中,也可以通过Test类的类名访问Tom类的protected类变量和类方法。
5.public 类与友好类
类声明时,如果关键字class前面加上public关键字,就称这样的类似一个public类
public class A{}
可以在任何一个类中,使用public类创建对象。如果不加public修饰
classs A{}
称为友好类。那么在另外一个类中使用友好类创建一个对象是,要保证它们在同一个包中。
注意:不能用protected和private修饰类。访问权限的级别排列,从高到低是public ,protected, 友好的 , private。