`
liuwei8728
  • 浏览: 32375 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java的访问控制和修饰符

    博客分类:
  • J2SE
阅读更多

以前对于java中类的访问控制没有做一定的研究,毕竟每次编代码由于Eclipse的智能型使得现在某些原理并没有实际的掌握,因此今天重新自己编代码将其区别分辨出来。

1.         Private:它只能被所定义的类或类的不同对象所访问。当外部访问这个变量时将出错。

       public class A {

    private int a;

   

    private void  count(){

      System.out.println("测试");   

    }

}

public class B {

 

    public void acceptMethod(){

       A a=new A();

       a.a=10;

       a.count();

    }

}

这样是错误的,B不能访问A的属性及方法,因为类B不是A类型的。但是如果我让B继承A,这样它会对吗?答案也是否定的。如果B继承A,只能说明BA的子类,并不能说明B就是A类型。因此这里可以将A中的访问权限改为publicprotected

 

2.        Protected:允许类本身、子类以及相同包中的类访问它,属于家庭秘密型,不让外人知道

package A;

public class A {

    protected int a;

    protected void  count(){

      System.out.println("测试");   

    }

}

 

 

package B;

import A.A;

public class B extends A{

 

    void test(){

       A a=new A();

       a.a=10;

       a.count();

    }

}

此方式是错误的,不被不同包中的类访问,所以是不能得到编译的。将该类放入同一包中,此时就是前面private说到的处理方式了,这样protected属性及方法就能得到访问。

3.    Public是无秘密可言,任何人都能看到。即使在不同包中任然一样能够访问。拿protected前面处理的例子进行修改,将发现其是可行的。在这里就不做代码介绍了。

 

4.    缺省

Java中如果不显示地设置成员访问控制的时候,即缺省的访问控制,该访问控制允许在相同包中的类成员之间相互访问,相当于在同一包中的类是相互信任的朋友。

package A;

public class A {

 

     int a;

     void  count(){

      System.out.println("测试");   

    }

}

 

package B;

import A.A;

public class B extends A{

 

    void test(){

       A a=new A();

       a.a=10;

        a.count();

    }

}

该方式处理是错误的,因为他们不属于同一个包中,且其访问方式是缺省的方式。处理方式是对缺省方式,将另外一个访问类放置于同一个包中。

 

总结:根据上面的例子及分析做如下总结。

1.       Public的访问权限最大,可以被不同包中的任何类访问到。

2.       Protected访问权限属于家庭秘密型,秘密只归“亲戚”所分享,因此不同包的类不允许其访问。

3.       Private最自私,其只允许自己访问。因此针对某些需要保护的数据可以采用该修饰符。

4.       缺省访问权限与protected相类似。

分享到:
评论

相关推荐

    Java零基础-访问控制权限修饰符.md

    本文档介绍了Java中的访问控制权限修饰符。它解释了public、private、protected和默认访问级别的含义和用法,以及它们在类、接口、成员变量和方法中的应用。 能学到什么 通过阅读本文档,您将学习以下内容: 不同...

    Java类的修饰符、访问控制符

    实验目的 理解掌握Java类修饰符、访问控制符等;理解熟悉String类的equals方法和= =运算符;进一步熟悉面向对象基本概念;熟悉Java中对象声明、创建、访问、参数传值等基本语法;

    Java 修饰符和运算符

    一、访问控制修饰符 Java 支持 4 种不同的访问权限: private 私有的 protected 受保护的 public 公共的 default 默认 1、访问权限 总结成如下表格: 修饰符 当前类 同一包内 子孙类 其他包 public yes yes yes yes ...

    访问控制修饰符,以及枚举

    访问控制修饰符,以及枚举

    Java四种访问控制修饰符知识点总结

    本篇文章给大家详细分析了Java四种访问控制修饰符的相关知识点,有兴趣的朋友可以参考学习下。

    Java的访问控制符

    java的访问控制符分为两类:类的访问控制符,属性和方法的访问控制符。  1. 类的访问控制符有两种:public, default(默认的,什么都不用写)  default是包内访问控制符。  当然对于内部类还可以有static修饰,...

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

    java的控制符可分为两大类,一种是访问控制符,另一种是非访问控制符。我们上文提到的public,private便是访问控制符了。 访问控制符:访问控制符的作用是说明被声明的内容(类、属性、方法和构造方法)的访问权限 ...

    Java import导入及访问控制权限修饰符原理解析

    主要介绍了Java import导入及访问控制权限修饰符过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    JavaSE基础:package,import,访问控制权限修饰符-28

    1、多态基础语法 2、多态在实际开发中的作用 3、final关键字 4、关于package和import 5、关于访问控制权限

    java类、对象、成员、package、import、访问修饰控制符总结

    java类、对象、成员 package、import、访问修饰控制符 接口和抽象类 细心总结,解惑上述所引起的一些困惑

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

    上章讲了访问控制符,这章开始讲非访问控制符。 java中的非访问修饰符的作用各不一样,据我所知常用的有六种: static final abstract synchronized volatile transient 今天我们只讲前三种,后面三种等我们讲到线程...

    Java关键字及其作用

    private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。 只能在声明private(内部)类、方法或字段的类中引用这些类、方法或字段。在类的外部或者对于子类而言,它们是不可见的。 所有类...

    微服务系列第十季-Java中的修饰符、包管理及异常处理

    第十季主要是给大家介绍一下:包的作用及使用、Java访问控制修饰符、Java非访问控制修饰符、Java中异常的概念、Exception类的层次、Java内置异常类、捕获异常、多重捕获块‘、throws关键字、finally关键字。

    scala 访问修饰符及作用域

    Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。 如果没有指定访问修饰符,默认情况下,Scala 对象的访问级别都是 public。 Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,...

    java日常词汇学习

     Access modifier 访问控制修饰符:访问控制修饰符用来修饰Java中类、以及类的方法和变量的访问控制属性。  Anonymous class 匿名类:当你需要创建和使用一个类,而又不需要给出它的名字或者再次使用的使用,就...

    Scala进阶_成员访问修饰符

    和Java一样,scala也可以通过访问修饰符,来控制成员变量和成员方法是否可以被访问。 定义 Java中的访问控制,同样适用于scala,可以在成员前面添加private/protected关键字来控制成员的可见性。但在scala中,没有...

    java 面试题

    获得需要的访问控制。 A .public B .no modifier C .protected D .private 【试题分析】Java 有4 种访问类型,分别为public 、protected 、default 和private 。其中public 变量 可以被所有的外部类访问,而...

    Java学习笔记-超强笔记

    实例变量的作用域至少在本类内部,受访问控制符的限制。 在重合作用域,实例变量和局部变量允许有命名冲突,“局部优先”。 定义方法: 格式: [ 修饰符 ] 返回类型 方法名( 参数列表 ) [ throws ...

    JAVA SE 开发手册.CHM

    8、JAVA面向对象之函数、堆和栈、访问修饰符 9、JAVA面向对象关键字 10、JAVA面向对象抽象类abstract 11、JAVA面向对象接口interface 12、JAVA面向对象之内部类、匿名内部类 13、JAVA集合框架之简介 14、JAVA...

    Java 模块开发.rar

    Java 平台模块系统是在 JDK 9 正式发布的。为了沟通起来方便,我们有时候就直接简称为 Java 模块。...缺失的访问控制 我们都清楚并且能够熟练地使用 Java 的访问修饰符。这样的访问修饰符一共有三个

Global site tag (gtag.js) - Google Analytics