欢迎访问宙启技术站
智能推送

Java中函数的封装和访问权限的控制

发布时间:2023-05-28 22:11:24

函数的封装

在Java中,我们可以通过类的封装来实现使用者只能访问我们想要暴露给他的部分,而将不需要访问的部分隐藏起来,保护代码的安全性和可维护性。

在Java中,我们可以使用访问权限来限制类的属性、方法等的访问范围。访问权限有4种,从大到小依次为:public、protected、默认和private。

public:公有的,任何类都可以访问。

protected:受保护的,只有本包和继承的子类可以访问。

默认:没有访问权限修饰符,既称为包访问权限,只有本包内部的类才可以访问。

private:私有的,只能在本类中访问,其他类无法访问。

例如,我们定义一个Person类:

public class Person{
    public String name;
    protected int age;
    String gender;
    private String address;

    public void setAddress(String address){
        this.address = address;
    }

    public String getAddress(){
        return this.address;
    }
}

在上述代码中,我们定义了Person类,它有四个属性:公有的name,受保护的age,默认的gender,私有的address。同时,我们定义了两个方法:公有的setAddress和公有的getAddress方法。其它类可以访问name属性和setAddress、getAddress方法,受保护的age属性只有本包和继承该类的子类可以访问,而默认的gender属性只有本包内部的类可以访问,private的address属性只能在本类中访问。

访问权限的控制

通过访问权限的控制,我们可以只暴露我们想要暴露给使用者的部分,同时将不需要访问的部分隐藏起来。在Java中,访问权限控制的应用主要有以下两种场景:

1.防止变量改变:一些类的属性或对象的状态在某些情况下是不能被改变的,这时我们可以将这些属性或状态设置成私有的,并提供对应的set和get方法来控制属性的赋值和取值。

例如,我们有Animal类:

public class Animal {
    private int legsNum;

    public void setLegsNum(int num){
        if(num >= 0)
            legsNum = num;
    }

    public int getLegsNum(){
        return legsNum;
    }
}

在Animal类中,我们将legsNum属性设置为私有的,外部无法直接访问它。同时,我们提供了setLegNum和getLegNum方法来控制legsNum属性的赋值和取值。在setLegNum方法中,我们可以添加一些条件控制,来限制legsNum属性的取值范围。

2.隐藏实现细节:有些类和方法的实现细节对外部使用者是不必知道的,此时我们可以将这些实现细节隐藏起来。

例如,我们有一个Student类:

public class Student {
    private String name;
    private double score;

    public void setName(String name){
        this.name = name;
    }

    public String getName(){
        return name;
    }

    public void setScore(double score){
        this.score = score;
    } 

    public boolean isPass(){
        return score >= 60;
    }
}

在这个类中,我们将name和score属性设置为私有的,并提供了对应的set和get方法。同时,我们提供了isPass方法来判断一个学生是否及格,但它并没有暴露score属性的值,从而隐藏了其实现细节。

总结

函数的封装可以帮助我们保护代码的安全性和可维护性,通过访问权限的控制,可以限制类的属性、方法等的访问范围,从而实现类的封装。在Java中,访问权限有4种,分别为public、protected、默认和private,通过不同的访问权限类型,可以控制类的属性、方法等不同的访问范围。