分享

访问控制

 pythonjava学习 2021-04-06

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种访问控制权限:

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

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

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

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

例:

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多