欢迎光临,了解微信小程序开发,就上易用通!

【后端】java基础(5.3)java高级基础之java的修饰符——访问控制符

发布:2018-01-24 15:55浏览: 来源:网络 作者:tianshu

java的控制符可分为两大类,一种是访问控制符,另一种是非访问控制符。我们上文提到的public,private便是访问控制符了。

  • 访问控制符:访问控制符的作用是说明被声明的内容(类、属性、方法和构造方法)的访问权限
    我们的访问控制符有四种:
    • public
    • protected
    • 不修饰
    • private

这里有一张经典的表可以说明他们的作用范围:

访问控制符 同一类下 同一包下 不同包下的子类 不同包下的非子类
public
protected ×
不修饰 × ×
private × × ×

以上表格中“√”表示可以访问,“×”表示不能访问,我们可以看出,public修饰的内容范围最大,private修饰的范围内容最小。

我们新建一个工程,在里面建两个包,test1和test2,然后在test1包下建一个类,叫Person,这次只给给四个属性,name age,gander,birth,用不同的修饰方法来修饰,并在类里面新建一个main方法。


  1. public class Person {
  2. public String name;
  3.  
  4. protected int age;
  5.  
  6. String gander;
  7.  
  8. private String birth;
  9.  
  10. public String getName() {
  11. return name;
  12. }
  13.  
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17.  
  18. public int getAge() {
  19. return age;
  20. }
  21.  
  22. public void setAge(int age) {
  23. this.age = age;
  24. }
  25.  
  26. public String getGander() {
  27. return gander;
  28. }
  29.  
  30. public void setGander(String gander) {
  31. this.gander = gander;
  32. }
  33.  
  34. public String getBirth() {
  35. return birth;
  36. }
  37.  
  38. public void setBirth(String birth) {
  39. this.birth = birth;
  40. }
  41.  
  42. public static void main(String[] args) {
  43. Person person = new Person();
  44.  
  45. }
  46. }

然后,我们在main方法里实例化一个Person类,然后我们不使用它的getter和setter方法,直接使用属性:


  1. public static void main(String[] args) {
  2. Person person = new Person();
  3. person.name = "大妖怪";
  4. person.age = 100;
  5. person.birth = "2016";
  6. person.gander = "男";
  7.  
  8. System.out.println(person.name);
  9. }

你会发现运行起来没有问题,这个就是同一类下的情况。

我们继续建一个Test类在test1包下,然后把我们刚刚这段main方法拷进去: 【后端】java基础(5.3)java高级基础之java的修饰符——访问控制符(图1)
你会发现,我们调用birth属性这里报错了,并且点击左边的红叉,它会给出提示让你要么改birth的修饰符,要么调用setBirth方法。
【后端】java基础(5.3)java高级基础之java的修饰符——访问控制符(图2)
这种情况属于不在同一类下在同一包下的情况了,我们查看下birth属性的修饰方法,正好是private。

那么我们把Test类拷到test2包下并且导包: 【后端】java基础(5.3)java高级基础之java的修饰符——访问控制符(图3) 你会发现现在只有name可以正常使用,别的都报错了,这种情况是不同包下的非子类,通过表格我们可以查到只有public修饰的属性可以被访问,而name的修饰符就是public。

接下来,我们让这个Student类继承我们的Person类,并且写个test方法去调用我们父类中的属性:


  1. public class Student extends Person {
  2. public void test(){
  3. name = "大妖怪";
  4. age = 1;
  5. birth = "2016";
  6. gander = "男";
  7. }
  8. }

【后端】java基础(5.3)java高级基础之java的修饰符——访问控制符(图4) 此时你会发现,没报错的只有我们的name和age,也就是public和protected修饰的属性。

讲到这可以顺便说说我们的一些代码命名规范了:

  • 项目名全部小写
  • 包名全部小写
  • 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写
  • 变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写
  • 常量名全部大写
  • 所有命名规则必须遵循以下规则:
    • 名称只能由字母、数字、下划线、$符号组成
    • 不能以数字开头
    • 名称不能使用JAVA中的关键字
    • 不允许出现中文及拼音命名

至于什么是关键字,给个最简单的判断方法,在eclipse中你写出来的东西是红色的就是了,比如class: 【后端】java基础(5.3)java高级基础之java的修饰符——访问控制符(图5)





免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。