1.6类的访问权限控制

类访问控制权限

  • public:同包/不同包中的类可以访问
  • 无修饰:同包 类可以访问

类成员访问控制权限

(能访问类成员,首先基于能访问类,不能访问不同包的"默认"类)
  • public(公有)
    -可以被其他任何方法访问
  • protected(保护)
    -只可被同一类及子类方法访问
  • private(私有)
    -只可被同一类的方法访问

无修饰(默认)
-仅允许同一包内的访问,又称为"包(package)访问权限"

可以打个比喻,如有一位母亲有很多想法,有一部分只对自己说,藏在心里(private想法);更多一些想法会对家人表达(包访问权限想法);再多一些想法还会对自己出嫁的女儿倾诉(protected想法);再多一些想法会对外界认识的所有人说(public想法)

将实际变量设置为private

public class Circle{
     static double PI =3.14159265;
     private int radius;
     public double circumference(){
           return 2*PI*radius;
     }
}

再编译CircumferenceTester.java
public class CircumferenceTester{
    public static void main(String args[]){
       Circle c1=new Circle();
      c1.radius=50;
      Circle c2=new Circle();
      c2.radius=10;

      double circum1=c1.circumference();
      double circum2=c2.circumference();
      System.out.println("Circle 1 has circumference"+circum1);
      System.out.println("Circle 2 has circumference"+circum2);
    }
}

编译时提示出错
在编译c1.radius=50和c2.radius=10时,提示语法错误(radius has private access in Circle)

说错误原因
Circle类中变量radius被变量声明为private,在其他类中不能直接访问radius

公有接口访问私有成员

就是通过"内鬼"接应外部(一个能访问内部,又与外部接触的方法)
get方法

-[功能] 取得属性变量的值
-[命名] 以"get开头",后面是实例变量的名字

public int getRadius(){
     return radius;
}
set方法

-[功能] 设置属性变量的值
-[命名] 以"set开头",后面是实例变量的名字

public void getRadius(int r){
     radius=r;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值