zoukankan      html  css  js  c++  java
  • 访问控制权限

    访问控制权限

      之前学到的private就是一种访问控制权限,这种访问控制全是只是我们封装的一部分

    在java中提供4种访问控制权限:private default protected public 而这四种访问控制权限,定义如下:

    no 范围 private default protected public
    1 同一包中的同一类
    2 同一包中的不同类  
    3 不同包中的子类    
    4 不同包中的非子类      

      实际上public永远都可以访问,对于封装而言有三个权限:private defualt protected

    范例:观察protected访问权限

    1 package cn.gl.demo.a;
    2 public class Info{
    3     //此时出现的是protected访问权限
    4     protected String str="www.CSDN.com4";
    5 }

     范例:定义另外一个包进行该类的继承

    1 package cn.gl.demo.b;//不同包
    2 import cn.gl.demo.a.Info;
    3 public class SubInfo extends Info{//Info的子类
    4     public void print(){
    5         System.out.println(super.str);//在父类中属于protected权限
    6     }
    7 }

    范例:定义测试程序类

    1 package cn.gl.testab;
    2 import cn.gl.demo.b.SubInfo;
    3 public class TestInfo{
    4     public static void main(String args[]){
    5         new SubInfo().print();
    6     }
    7 }

     现在的SubInfo虽然与Info属于不同的开发包,但是毕竟是其子类,所以可以访问,但是反过来,如果想要在test的Info中使用Info类(非子类)则就会出现错误

    范例:错误程序

    1 package cn.gl.testab;
    2 import cn.gl.demo.a.Info;
    3 public class TestInfo{
    4     public static void main(String args[]){
    5         System.out.println(new Info().str);
    6     }
    7 }

     str是protected权限,所以此处一定无法访问

    结论:关于权限的选择

      对于封装90%使用private,有一些情况下也会使用protected,这两种都叫封装;

      属性都使用private, 方法都使用public

    java中的封装性就是使用 private protected defualt三个权限的使用,

  • 相关阅读:
    Python 中的 __str__ 与 __repr__ 到底有什么差别
    02 LeetCode---链表相加
    01 LeetCode---两数之和
    python 数据结构一 之 线性表
    来自C++的"Const式"傲娇
    string 与 char 字符串区别-1
    超级有爱的并查集入门
    多项式求解
    竞码编程-蓝桥杯模拟赛4-D题
    树的直径-蓝桥杯大臣的旅费
  • 原文地址:https://www.cnblogs.com/Tony98/p/10427131.html
Copyright © 2011-2022 走看看