Java的封装性与访问控制详述_Ubuntu_青云站长教程网
欢迎来到站长教程网!
  • 秒到短信接口 免费试用
  • 微信支付宝接口 秒结算
  • 中文网站排名|申请加入
  • 搜索引擎全站查询
  • 查询移动网站权重数据
  • 海外主机 台湾公司直销
  • Ubuntu

    当前位置:主页 > 服务器教程 > Ubuntu >

    Java的封装性与访问控制详述

    时间:2019-08-13|栏目:Ubuntu|点击:
  • Java面向对象的封装性是通过对成员变量和方法进行访问控制实现的,访问控制分为4个等级:私有、默认、保护和公有,具体规则如下表:

    Java的封装性与访问控制详述

    1.私有级别

    私有级别的关键字是private,私有级别的成员变量和方法只能在其所在类的内部自由使用,在其他的类中则不允许直接访问。私有级别限制性最高。示例代码如下:

    // PrivateClass.java文件
    public class PrivateClass {           
        private int x;                   

    public PrivateClass() {           
            x = 100;
        }
        private void printX() {           
            System.out.println("Value Of x is" + x);
        }
    }


    // HelloWorld.java文件调用PrivateClass
    public class HelloWorld {
        public static void main(String[] args) {

    PrivateClass p;
            p = new PrivateClass();

    //编译错误,PrivateClass中的方法 printX()不可见
            p.printX();                   
        }
    }

    上述代码第2行声明PrivateClass类,其中的代码第3行是声明私有实例变量x,代码第5行是声明公有的构造方法。代码第8行声明私有实例方法。HelloWorld类中代码第22行会有编译错误,因为PrivateClass中printX()的方法是私有方法。

    2.默认级别

    默认级别没有关键字,也就是没有访问修饰符,默认级别的成员变量和方法,可以在其所在类内部和同一个包的其他类中被直接访问,但在不同包的类中则不允许直接访问。示例代码如下:

    // DefaultClass.java文件
    package com.Kevin;

    public class DefaultClass {

    int x;                           

    public DefaultClass() {
            x = 100;
        }

    void printX() {                 
            System.out.println("Value Of x is" + x);
        }

    }

    上述代码第6行的x变量前没有访问限制修饰符,代码第12行的方法也是没有访问限制修饰符。它们的访问级别都有默认访问级别。

    在相同包(com.Kevin)中调用DefaultClass类代码如下:

    // com.Kevin包中HelloWorld.java文件
    package com.Kevin;

    public class HelloWorld {

    public static void main(String[] args) {

    DefaultClass p;
            p = new DefaultClass();
            p.printX();
        }
    }

    默认访问级别可以在同一包中访问,上述代码可以编译通过。

    在不同的包中调用DefaultClass类代码如下:

    // 默认包中HelloWorld.java文件
    import com.Kevin.DefaultClass;

    public class HelloWorld {

    public static void main(String[] args) {

    DefaultClass p;
            p = new DefaultClass();
            // 编译错误,DefaultClass中的方法 printX()不可见
            p.printX();
        }
    }

    该HelloWorld.java文件与DefaultClass类不在同一个包中,printX()是默认访问级别,所以p.printX()方法无法编译通过。

    3.共有级别

    公有级别的关键字是public,公有级别的成员变量和方法可以在任何场合被直接访问,是最宽松的一种访问控制等级。示例代码如下:

    // PublicClass.java文件
    package com.Kevin;

    public class PublicClass {

    public int x;               

    public PublicClass() {
            x = 100;
        }

    public void printX() {       
            System.out.println("Value Of x is" + x);
        }

    }

    上述代码第6行的x变量是公有级别,代码第12行的方法也是公有级别。调用PublicClass类代码如下:

    // 默认包中HelloWorld.java文件
    import com.Kevin.PublicClass;

    public class HelloWorld {

    public static void main(String[] args) {

    PublicClass p;
            p = new PublicClass();
            p.printX();
        }
    }

    该HelloWorld.java文件与PublicClass类不在同一个包中,可以直接访问公有的printX()方法。

    4.保护级别

    保护级别的关键字是protected,保护级别在同一包中完全与默认访问级别一样,但是不同包中子类能够继承父类中的protected变量和方法,这就是所谓的保护级别,“保护”就是保护某个类的子类都能继承该类的变量和方法。示例代码如下:

    // ProtectedClass.java文件
    package com.Kevin;

    public class ProtectedClass {

    protected int x;                   

    public ProtectedClass() {
            x = 100;
        }

    protected void printX() {           
            System.out.println("Value Of x is " + x);
        }

    }

    上述代码第6行的x变量是保护级别,代码第12行的方法也是保护级别。

    在相同包(com.Kevin)中调用ProtectedClass类代码如下:

    // 默认包中HelloWorld.java文件
    package com.Kevin;

    import com.Kevin.ProtectedClass;

    public class HelloWorld {

    public static void main(String[] args) {

    上一篇:Python中的上下文管理器和with语句

    栏    目:Ubuntu

    下一篇:String、StringBuffer、StringBuilder对比总结

    本文标题:Java的封装性与访问控制详述

    本文地址:http://www.jh-floor.com/fuwuqijiaocheng/Ubuntu/20149.html

    您可能感兴趣的文章

    广告投放 | 联系我们 | 版权申明

    重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

    如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

    联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

    Copyright © 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号