• ThinkJava-访问权限控制


    6.2.3 private: 你无法访问
    关键字private的意思是,除了包含该成员的类之外,其他任何类都无法访问这个成员。由
    于处于同一个包内的其他类是不可以访问private成员的,因此这等于说是自己隔离了自己。从
    另一方面说,让许多人共同合作来创建一个包也是不大可能的.为此private就允许你随意改变
    该成员,而不必考虑这样做是否会影响到包内其他的类。
     
    默认的包访问权限通常已经提供了充足的隐藏措施.请记住,使用类的客户端程序员是无
    法访问包访问权限成员的。这样做很好,因为默认访问权限是一种我们常用的权限,同时也是
    一种在忘记添加任何访问权限控制时能够自动得到的权限.因此,通常考虑的是,哪些成员是
    想要明确公开给客户端程序员使用的,从而将色们声明为public ,而在最初,你可能不会认为自
    己经常会需要使用关键字private , 因为没有色,照样可以工作.然而,事实很快就会证明,对
    private的使用是多么的重要,在多钱程环境下更是如此(正如将在第2 1章中看到的)。
    此处有一个使用private的示例:
    package com.cy.access;
    
    class Sundae {
      private Sundae() {}
      static Sundae makeASundae() {
        return new Sundae();
      }
    }
    
    public class IceCream {
      public static void main(String[] args) {
        //! Sundae x = new Sundae();
        Sundae x = Sundae.makeASundae();
      }
    }
    这是一个说明private终有其用武之地的示例: 可能想控制如何创建对象,并阻止别人直接
    访问某个特定的构造器(或全部构造器).在上面的例子中,不能通过构造器来创建Sundae对象,
    而必须调用makeASundae()方法来达到此目的 。
    任何可以肯定只是该类的一个"助手"方法的方法,都可以把它指定为private,以确保不
    会在包内的其他地方误用到它, 于是也就防止了你会去改变或删除这个方法。将方法指定为
    private确保了你拥有这种选择权.
    这对于类中的private域同样适用。除非必须公开底层实现细目(此种境况很少见) ,否则就
    应该将所有的域指定为private . 然而,不能因为在类中某个对象的引用是private ,就认为其他
    的对象无法拥有该对象的public 引用
     
     
    6.2.4 protected: 继承访问权限
    关键字protected处理的是继承的概念,通过继承可以利用一个现有类-我们将其称为基类,
    然后将新成员添加到该现有类中而不必碰该现有类.还可以改变该类的现有成员的行为.
    如果创建了一个新包,并自另一个包中继承类,那么唯一可以访问的成员就是源包的public
    成员. (当然,如果在同一个包内执行继承工作,就可以操纵所有的拥有包访问权限的成员. )
    有时,基类的创建者会希望有某个特定成员,把对它的访问权限赋予派生类而不是所有类.这
    就需要protected来完成这一工作. protected也提供包访问权限,也就是说,相同包内的其他类
    可以访问protected元素。
    6.3 接口和实现
    6.4类的访问权限

    ------------------

  • 相关阅读:
    xapian的使用
    Andriod 环境配置以及第一个Android Application Project
    2013Esri全球用户大会之ArcGIS for Server&Portal for ArcGIS
    window server 2012 更改密钥 更改系统序列号
    持续集成之路——数据访问层的单元测试(续)
    多项式相乘与相加演示
    hdu 1847 博弈基础题 SG函数 或者规律2种方法
    solaris之cpu
    Android音效SoundPool问题:soundpool 1 not retry
    poj1845-Sumdiv
  • 原文地址:https://www.cnblogs.com/tenWood/p/8409189.html
Copyright © 2020-2023  润新知