Logo

郎哥编程

权限修饰符

2019-12-12 955

权限修饰符主要是用于限定外部访问类、类属性和类方法的访问权限。权限修饰符有default、public、private、protect,这些修饰符的访问权限如下表所示。

image.png


在上面的访问权限规则表中。

default是默认访问权限,当我们在类中声明成员变量或成员方法时,如果不添加访问权限修饰符,默认的就是default权限。default权限允许同一个类、以及同一个包中的类、同包子类访问成员变量和方法。

public权限是公有权限,它允许同一个类、同一包下的类、同包子类、其它包的类都可以访问成员变量和方法。

private权限是私有权限,它只允许同一个类来访问成员变量和方法。

protect权限主要用于子类访问权限的控制,它允许同一个类、同一个包的类和同包子类访问成员变量和方法。

理解访问权限的作用

在PbaseUnit13项目sample包下创建Circle类,定义成员变量PI(圆周率)和radius(半径),成员变量使用private权限修饰符修饰。代码如下:

/** 
* @Title: Circle.java 
* @Package sample 
* @Description: Java基础知识课程案例 
* @author 编程训练营 
* @date  
* @version V1.0 
*/ 
 
package sample;
 
/** 
* @ClassName: Circle 
* @Description: 类(权限修饰符)案例
* @author 编程训练营 
* @date  
* 
*/
 
public class Circle {
    /** 
    * @Fields π属性
    */ 
    private double PI = 3.14;
   
    /** 
    * @Fields 半径属性
    */ 
    double radius;
 
    /**
     * @return the radius
     */
    public double getRadius() {
       return radius;
    }
 
    /**
     * @param radius the radius to set
     */
    public void setRadius(double radius) {
       this.radius = radius;
    }
 
}

在PbaseUnit13项目sample包下创建Manage类,Manager类要有main函数入口。代码如下:

/** 
* @Title: Manage.java 
* @Package sample 
* @Description: Java基础知识课程案例
* @author 编程训练营 
* @date  
* @version V1.0 
*/ 
 
package sample;
 
/** 
* @ClassName: Manage 
* @Description: 类(权限修饰符)案例
* @author 编程训练营 
* @date  
* 
*/
 
public class Manage {
 
    /** 
    * @Title: main 
    * @Description:Java程序入口main方法
    * @param @param args    参数 
   
    * @return void    返回类型 
    * @throws 
    */
 
    public static void main(String[] args) {
   
       Circle  cirlce = new Circle();
       System.out.println(cirlce.PI);
       System.out.println(cirlce.radius);
 
    }
 
}

在Manage类的main方法里,用new运算符实例化Circle类为cirlce对象,并应用cirlce对象直接访问对象的成员变量PI和radius。因为PI用权限修饰符private修饰,外部类不能直接访问cirlce对象的成员变量PI,因此上面的代码是有错误,编译不能通过(见下图)。但外部类可以直接访问cirlce对象的成员变量radius,因为radius是默认访问权限,默认访问权限允许同一个类、以及同一个包中的类、同包子类访问成员变量和方法。

image.png 

上图中,标有红色叉号的第34条语句就是出错的语句,语句出错的地方用红色波浪线标出,标出的就是Circle类的PI属性。将鼠标移动到PI区域,eclipse会给出错误提示,错误提示如下图所示:

 image.png

错误意思是PI属性对外部不可见,需要修改PI属性的可见性。

有两种方法可以解决上面的错误:

第一种方法是将PI属性的访问权限修改为public或default权限;

第二种方法是添加PI属性的get和set方法。


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论