访问控制

Java为保护类及成员的安全,提供了公有(public)、保护(protected)、私有(private)、缺省多级访问控制权限,用于声明该类或成员能被其他哪些类访问,实现信息分级隐藏技术。

1、类的访问控制权限

类有两种访问控制权限:公有和缺省。

公有权限使用public修饰符,可被所有包中的其他类访问;

缺省权限没有修饰符,仅能被当前包(当前文件夹)中的其他类访问。

注:一个源程序文件中可以声明多个类,但用public修饰的类只能有一个,且该类名必须与文件名相同。

例:Student_ex.java此文件夹中有两个类。其中main方法在类Student_ex中,故此文件夹以此类名命名。

Person类为缺省权限,但它与Student_ex在同一个文件中,故是可以访问的。

class Person{

private String name;

public Person(){

name="123";

}

public Person(String name){

this.set(name);

}

public void set(String name){

this.name=name;

}

public void getName(){

System.out.println(name);

}

}

public class Student_ex{

public static void main(String args[]){

Personp=newPerson();

p.getName();

p.set("张熹熹");

p.getName();

}

2、类中成员的访问控制权限

一个类的所有成员都可被本类的代码访问。

但对其他类,可以有选择地对其可见或不可见。

类的成员有4种访问控制权限:

(1)private声明私有成员,该成员仅能被当前类的成员访问,这是类希望隐藏的部分。很多情况下,成员变量均声明为私有。

(2)缺省:说明该成员能被当前类以及当前包中的其他类访问。

(3)protected声明保护成员:该成员能被当前类及其子类、当前包中的其他类访问。

(4)public声明公有成员,该成员能被所有类访问。

例:

package learn;

class Date{//缺省,只能被当前文件或当前包中访问

private intyear,month,day;//私有变量,只能被当前类访问

public Date(int year,int month,int day){

this.set(year, month, day);

}

public void set(int year,int month,int day){

this.year=year;

this.month=month;

this.day=day;

}

public Date(){

year=2000;

month=1;

day=1;

}

public void getYear(){//公有方法,可以被其他类访问

System.out.println(year);//本类可以访问所在成员

}

}

public class MyDate {

publicstaticvoid main(String args[]){

Dated=newDate();

//d.year=5;

//出钷啦。year为私有成员,不能被其他类访问

d.getYear();//可以访问public类型的方法

}

}

(0)

相关推荐