博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
02-25类成员的访问权限
阅读量:7051 次
发布时间:2019-06-28

本文共 1715 字,大约阅读时间需要 5 分钟。

面向对象编程的一大特性就是可以控制类成员的可访问性。当前主流的面向对象语言都拥有以下三种基本的可访问性。

1)公有:public 访问不受限制

2)私有:private 只有类自身成员可访问

3)保护:protected 子类可以访问,其他类无法访问

(1)public和private

public和private主要用于单个类的成员存取权限。

1 class A2     {3         public int publicI;4         private int privateI;5         protected int protectedI;6     }

当外界创建一个A的对象时,之恩个访问A的公有实例字段publicI;

1  A a = new A();2  a.publicI = 100;//OK;

类A的私有实例字段privateI只能被自身的实例方法所使用:

1 public  class A 2     { 3         public int publicI; 4         private int privateI; 5         protected int protectedI; 6         private void f() 7         { 8             privateI = 100;//OK 9         }10     }

上述代码中,类A的私有方法f()访问了私有字段privateI.注意:只要是类A直接定义的实例方法,不管他是公有的还是私有的,都可以访问类自身的私有实例方法。

(2)protected

在形成继承关系的两个类之间,可以定义一种扩充权限--protected;

当一个类成员被定义为protected之后,所有外界类都不可以访问它,但其子类可以访问它。

以下详细说明子类可以访问父类的哪些部分:

1 class Parent   //父类 2     { 3         public int publicF=0; 4         private int privateF=0; 5         protected int protectedf=0; 6         protected void protectedFunc() 7         { 8              9         }10     }11     class Child : Parent  12     {13 14         public void ChildFunc()15         {16             publicF = 100;//正确,子类可以访问父类的公有字段17             privateF = 200;//错误,子类不嗯能够访问父类的私有字段18             protectedf = 300;//正确,子类可以访问父类的保护方法19             protectedFunc();//正确,子类能访问父类的保护方法20         }21     }

当创建子类对象后,外界可以访问子类的公有成员和父类公有成员,如下所示:

1             Child obj = new Child();2             //可以调用子类的公有方法3             obj.ChildFunc();4             //可以访问父类的公有字段5             obj.publicF = 1000;

由此可见,可以通过子类对象访问其父类的所有公有成员,事实上,外界根本分不清对象的哪些公有成员来自父类,哪些公有成员来自子类本身。

总结:

  • 所有不必让人知道的东西都是私有的;
  • 所有需要向外提供的服务都是公有的;
  • 所有的“祖传秘诀”,“密不外传”的都是受保护的;

 

转载于:https://www.cnblogs.com/xiaoqingshe/p/4300281.html

你可能感兴趣的文章
Eclipse代码补全,修改 空格键 "=" 键不上屏
查看>>
01背包问题的java界面实现
查看>>
[leetcode] Permutations
查看>>
查看Android应用包名package和入口activity名称
查看>>
jquery disabled设置不可编辑
查看>>
Java Base
查看>>
mysql优化sql语句查询的方法(一)
查看>>
既然存在,就是合理的
查看>>
【GIT-1】GIT 的基础教程 创建,添加,更替,追溯版本库
查看>>
【原创】公司自研缓存系统UPU的总结
查看>>
一个JavaScript的简单通用验证
查看>>
java面试基本数据类型考点
查看>>
百行 HTML5 代码实现四种双人对弈游戏
查看>>
jQuery.extend 函数详解
查看>>
phpstorm 安装 及 使用 去掉名称类型提示
查看>>
Xp sp3 创建进程的堆栈
查看>>
Log4j的扩展-支持设置最大日志数量的DailyRollingFileAppender
查看>>
IT行业¬——Linux
查看>>
linkerd ab部署测试
查看>>
#日常杂记#Informatica 910 常见问题及可能的解决方法
查看>>