TIJ 复习笔记6

访问控制与“最初的实现并不恰当”有关
  • 类的访问权限
  • 方法和成员的访问权限

包结构

  1. 一个文件如HelloWorld.java被称为一个编译单元。
  2. 包内必须有一个 HelloWorld的类,是public的类,其他类对外不可访问。
  3. package hello;将许多文件从属同一个群组;目录结构应该放在hello下面。
  4. import hello.HelloWorld 或者import hello.*; 就可以导入其他类,并进行使用。
  5. 目录结构配合package关键字,保证包名独一无二。 例如

    package net.mindview.simple;
    public Print {
    }

    文件应该结构为:X:\xxx\net\mindview\simple\Print.java
  6. import配合classpass 寻找包 ,X:\xxx 应该在CLASSPATH变量中。
  7. import static net.mindview.simple.Print.*; 可以导入静态方法,直接使用。

类的访问权限

public 的类同一个包可以直接使用,不同包需要import。
不可以是private或者protect。
非public的类,只有包访问权限,包外无法访问

方法和成员的访问权限

类内部,无论是哪种权限修饰符,都可以互相访问。

类外部,
public的方法/成员,可以被访问到。
(无论是对象访问,还是静态成员访问。无论包内,包外。)

private的方法/成员,不可以被外部(包内/包外)访问到。
(内部可以,内部的static方法也可以创建对象进行访问)

包访问权限,允许包内访问,包外无法访问。

protected,继承父类的方法,如果是public,就可以访问,如果是private,就不能访问。protect的方法可以访问。

看一下如下表格就一目了然:

名称 包外 包外继承 包内继承 包内
public 可以 可以 可以 可以
protected 不可以 可以 可以 可以
包访问 不可以 不可以 可以 可以
private 不可以 不可以 不可以 不可以

注:包内,protected方法的都可以访问到。

TIJ的记法,public都可以,private都不可以,包访问包内可以。protected给包外的继承打开了一扇小窗。


被访问的类如下: (再分别写四个类,包外、包外继承、包内继承、包内 访问 Test1的四个方法,可以得出上表的结论)

package access.solution;
import static net.mindview.util.Print.*;


public class Test1 {
    public void foo1(){
        print("public foo1");
    }
    protected void foo2(){
        print("protected foo2");
    }
    void foo3(){
        print("default foo3");
    }
    private void foo4(){
        print("private foo4");
    }
    public static void main(String[] args){
        Test1 a = new Test1();
        a.foo1();
        a.foo2();
        a.foo3();
        a.foo4();
    }
}

END

posted @ 2016-06-14 20:50  程序员杰诺斯  阅读(113)  评论(0编辑  收藏  举报