zoukankan      html  css  js  c++  java
  • JAVA(2)之关于类的访问权限控制

    • 类的成员的四种访问权限
      • private
        • 只能在当前类中访问
      • 无修饰
        • 同一个包中的类都可以访问
      • protected
        • 同一个包中的类可以访问
        • 不同包中的子类可以访问
      • public
        • 所有类都可以访问
    • 示例代码
      • 同包
        •  
          1 package com.study.main;
          //同包非子类

          3 public class Two 4 { 5 private int a; 6 protected int b; 7 public int c; 8 int d; 9 }
        •  
          package com.study.main;
          //同包子类
          public class Son extends Main
          {
          
          }

        •  1 package com.study.main;
           2 //测试类
           3 import com.study.one.One;
           4 import com.study.one.SonOne;
           5 
           6 public class Main
           7 {
           8     private int a;
           9     protected int b;
          10     public int c;
          11     int d;
          12 
          13     public static void main(String[] args)
          14     {
          15         Main m = new Main();//同一类
          16         System.out.println("同一类");
          17         System.out.println(m.a);//private
          18         System.out.println(m.b);//protected
          19         System.out.println(m.c);//public
          20         System.out.println(m.d);//无修饰
          21         
          22         Son s = new Son();//同一包中的子类
          23         System.out.println("同一包中的子类");
          24 //        System.out.println(s.a);//private无法访问
          25         System.out.println(s.b);//protected
          26         System.out.println(s.c);//public
          27         System.out.println(s.d);//无修饰
          28         
          29         Two t = new Two();//同一包中的非子类
          30         System.out.println("同一包中的非子类");
          31 //        System.out.println(t.a);//private无法访问
          32         System.out.println(t.b);//protected
          33         System.out.println(t.c);//public
          34         System.out.println(t.d);//无修饰
          35         
          36         SonOne so = new SonOne();//不同包中的子类
          37         System.out.println("不同包中的子类");
          38 //        System.out.println(so.a);//private无法访问
          39         System.out.println(so.b);//protected
          40         System.out.println(so.c);//public
          41 //        System.out.println(so.d);//无修饰无法访问
          42         
          43         
          44         One o = new One();//不同包中的非子类
          45         System.out.println("不同包中的非子类");
          46 //        System.out.println(o.a);//private无法访问
          47 //        System.out.println(o.b);//protected无法访问
          48         System.out.println(o.c);//public
          49 //        System.out.println(o.d);//无修饰无法访问
          50         
          51         
          52     }
          53 }
      • 不同包
        •   
          package com.study.one;
          //不同包非子类
          public class One
          {
              private int a;
              protected int b;
              public int c;
               int d;
          }
        • 1 package com.study.one;
          2 //不同包子类
          3 import com.study.main.Main;
          4 
          5 public class SonOne extends Main
          6 {
          7 
          8 }
      • 运行截图

        •   
    • 总结
      • 当前类的都可以访问
      • 同一个包中的类除了private不能访问
      • 不同包中的子类只有public和protected可以访问
      • 不同包中的非子类只有public可以访问
  • 相关阅读:
    Effective C++学习笔记:确定基类有虚析构函数
    WPF和Silverlight程序中DispatcherTimer与Timer的区别
    2011.12.23
    WP7里的JSON解析
    2011.11.16
    2011.12.21
    2011.11.18
    2011.11.17
    2011.11.24
    WebClient does not support concurrent I/O operations 错误的解决办法
  • 原文地址:https://www.cnblogs.com/quxiangjia/p/11911421.html
Copyright © 2011-2022 走看看