第6章 访问权限控制

  1. 访问权限控制的等级,从最大权限到最小权限依次为:public、protected、包访问权限(没有关键字)和private。
    public:任何人都可以访问。
    protected:子类以及包内成员可以访问。
    包访问权限:包内成员可以访问。
    private:只有在本类中可以访问。
  2. .java文件可以有public类也可以没有,但只能存在一个public类。如果有public类,.java文件的文件名必须和类名相同,否则编译器报错。
  3. 使用import static语句可以导入类中的静态方法(不能导入静态成员)
package bulidfortest;

// 使用static关键字从类中导入public静态方法。
import static ThinkingInJava.Test07.*;

public class Test01 {
    public static void main(String[] args) {
        // ThinkingInJava.Test07类中的静态方法print
        print(new Object());
    }
}
  1. 处于相同目录下但没有给自己设定任何包名称的类互相也享有包访问权限,因为Java将这样的类自动看作是隶属于该目录的默认包中。
  2. 关于继承一个很有趣的事情是:如果某个类Type有一个方法method( )的话,那么Type的任何子类都拥有该方法。但是如果子类和Type位于不同的包中而method( )只有包访问权限的话,那么子类是无法使用method( )方法的。(protected关键字可完美解决该问题)
  3. 将某个类的构造方法私有化,在其他类中将无法new该类的对象。
public class Test08 {
    public static void main(String[] args) {
        // A a1 = new A();  不能在其他类new A的对象
        A a2 = A.makeAs();  // 调用静态方法new对象。
        A a3 = A.makeAs();
        A a4 = A.makeASingle();
        A a5 = A.makeASingle();
        System.out.println(a2); // ThinkingInJava.A@b4c966a
        System.out.println(a3); // ThinkingInJava.A@2f4d3709
        System.out.println(a4); // ThinkingInJava.A@4e50df2e
        System.out.println(a5); // ThinkingInJava.A@4e50df2e
    }
}

class A {

    private static final A singleA = new A();

    // 构造方法私有
    private A () {

    }

    // 由于不能在其他类new A对象,所以实例方法根本不可能被调用,需要用静态方法。
    public A makeA() {
        A a1 = new A();
        return a1;
    }

    // 每次调用生成一个新的A对象
    public static A makeAs() {
        A a1 = new A();
        return a1;
    }

    // 每次调用返回的都是相同的singleA对象,因为它是静态成员,只赋值一次。
    public static A makeASingle() {
        return singleA;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值