thinking in java 第六章笔记及思考:艳遇 访问权限控制

  这一章的值得深究的知识点很少,都很基础,也就只讲一下几点了。
  
  访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关。
  为什么要有访问权限控制?有时候一个类并不想其他类知道其所有的行为,因此我们可以理解为是为了安全问题而使用访问权限控制。
  
一、public、private、protect、default的访问权限区别
  我每次都会翻看default和protect的访问权限的区别,当然每次搜到的都是public、private、protect、default那个4 X 4的矩阵图,如下:
  这里写图片描述
  每次看完之后还是记不住,不知道有没有人是一样的情况。因为我之前主要在一个包内写基类的子类,在我看来:default行为(default方法)明明可以在其子类被访问,为什么这里权限却说不能被子类访问?
  public成员能被所有类访问,private只能被在类内部被访问,这个众所周知。
  其实这里把子类和基类算在是一个同包内。我觉得更明确的说法应该把子类分为包内子类、包外子类。default行为能被同一个包中的子类访问,不能被包外的子类访问。而protect行为既能被包内子类访问,也能被包外子类访问。 这样是不是就很清新了,我是再也没有混淆过。因此default也叫包访问权限,protected 也称之为继承访问权限
  
  包访问权限:包内所有其他类对default成员都有访问权限,但是对于包之外的所有类(包括派生类)都是private的。
  继承访问权限:赋予派生类(包内、包外)而不是所有类,他的权限级别比default高,因此也能被包中类访问。
  访问权限控制通常被称为具体实现的隐藏。
  把数据和方法包装进类中,以及具体实现的隐藏,常共同被称作是封装。

二、接口和实现
  这里提到这个点是因为接口和实现往往是分离的,在项目中通常调用接口,而不是调用具体的实现。

猜你喜欢

转载自blog.csdn.net/u010986518/article/details/82143737