在java中是通过各种访问区分符来实现数据封装的,共分为四种访问级别(由高到低):private(私有)、friendly(缺省)、protected(受保护)、public(公共)。
注意:以上四种访问修饰符可以作用于任何变量和方法,类只可以定义为私有或公共级别(嵌套类除外)。
¨ public(公共)
当变量或方法被public修饰时,该变量和方法可以在任何地方(指的是任何包中)的任何类中被访问。
//类PublicSample中的构造方法、成员变量及方法均被定义为公共的访问级别
package com.itjob;
class PublicSample
{
public PublicSample(){....}
public int num1;
public byte bt1;
public char ch1;
public void method1(){....}
}
通过以上定义,类PublicSample中的成员方法和变量可以在任何包中的任何类中访问,即访问是公共的,不受限制的。以下访问都是允许的:
访问1
class PublicSample
{
......
public static void main(String[] args)
{
new PublicSample().num1 = 100;
new PublicSample().ch1 = '\u0000';
new PublicSample().bt1 = 10;
new PublicSample().method1();
}
}
访问2
package com.java;
import com.itjob.*;
class A
{
public void method1()
{
new PublicSample().ch1 = 'a';
....
}
}
¨ protected(受保护的)
当类的变量或方法被protected修饰时,该变量和方法只可以在同包中的任何类、不同包中的任何当前类的子类中所访问。即不同包中的任何不是该类的子类不可访问级别为protected的变量和方法。
//受保护的变量
protected Stirng str = "";
//受保护的方法
protected String get(){return "";}
¨ friendly(缺省的)
当类的变量和方法没有显示地被任何访问区分符修饰时,该变量和方法的访问级别是缺省的。缺省的变量和方法只能在同包中的类中被访问。
//缺省访问级别的变量和方法、类
Float f1 = null;
void method(){...}
class C1{...}
¨ private(私有的)
被private所修饰的所有变量和方法只能在所属类中被访问。即类的私有成员和变量只能在当前类中被访问。
//私有的构造方法和成员变量、方法
private ClassName(){....}
private int num = 0;
private void method(){....}
通过以上学习,我们可以通过以下表格来描述四种访问区分符的访问限制:
更多Java视频教程