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

Java函数的可见性修饰符和访问控制方式

发布时间:2023-06-06 16:42:09

Java函数的可见性修饰符和访问控制方式

Java 函数(方法)有四种可见性修饰符:public、protected、default(缺省)和private。访问控制方式主要是指这些可见性修饰符的使用场合和相应的访问限制,下面分别进行详细介绍。

1. public

public 表示公开的,在任何地方都可以访问到该函数。对某个类的公共接口进行限制,在保证其内部的实现不受外部干扰的情况下,允许外部函数与该类进行交互,实现了封装的思想。

例如:

public class Car {

    public void start() {

        System.out.println("Car starts.");

    }

    public void run() {

        System.out.println("Car runs.");

    }

    public void stop() {

        System.out.println("Car stops.");

    }

}

2. protected

protected 表示受保护的,只有该类和其子类的成员才能访问该函数。即子类可以调用被父类声明为 protected 的方法,能够帮助子类完成自己的功能。使用父类实现一些公共方法,而这些公共方法可以被子类继承并重写,减少了代码的重复性。

例如:

public class Shape {

    protected String name;

    public String getName() {

        return name;

    }

}

public class Circle extends Shape {

    public Circle(String name) {

        this.name = name;

    }

    public void draw() {

        System.out.println("Drawing a circle: " + getName());

    }

}

3. default(缺省)

default 表示默认的,也是包访问权限修饰符,只有在同一个包中的其他类才能访问该函数。与 public 恰恰相反,default 是不能被其他包的类所访问的。同样是实现类的内部逻辑封装化,使得类的使用者只能通过事先定义好的公共接口来与该类进行交互,达到更高的安全性。

例如:

class Person {

    String name;

    int age;

    public Person(String name, int age) {

        this.name = name;

        this.age = age;

    }

}

4. private

private 表示私有的,只能在该类内部访问该函数。使用 private 可以使函数只能在当前类内部使用,外部无法访问。可以避免其他类通过直接设置和获取变量值的方式来修改内部状态,从而使类的内部实现更加安全。

例如:

public class Student {

    private String name;

    private int age;

    private String gender;

    public void setName(String name) {

        this.name = name;

    }

    public void setAge(int age) {

        this.age = age;

    }

    public void setGender(String gender) {

        this.gender = gender;

    }

    private void updateInfo() {

        // privately update student info

        System.out.println("Update student info.");

    }

}

综上所述,Java 函数的可见性修饰符和访问控制方式以不同的方式限制了对类中函数的访问和使用。public 修饰符可以实现函数的全部公开,被任何程序元素所访问,而 protected、default、private 则对访问者有不同的限制,能够更加灵活地控制类方法的访问权限。合理的使用这些可见性修饰符,可以使代码更易读,更高效可靠,为 Java 程序的开发和维护提供便利。