java基础学习(五)访问权限控制

来源:互联网 发布:手机电影拍摄软件 编辑:程序博客网 时间:2024/05/17 22:04

java提供的访问权限控制的等级,从最大权限到最小权限依次为:public、protected、包访问权限(没有关键字)、private。

这几个访问权限修饰词在使用时,是置于类中每个成员的定义之前的。无论它是一个方法还是一个域。每个访问权限修饰词仅控制它所修饰的特定定义的访问权。

1、包访问权限(没有关键字)
如果不提供任何访问修饰词,意味着它是“包访问权限”。当前的包中的所有其他类对那个成员都有访问权限,但对于这个包之外的所有类,这个成员却是private。

2、接口访问权限(public)
使用关键字public,意味着public之后紧跟着的成员声明自己对每个人都是可用的。

3、私有访问权限(private)
意味着除了包含该成员的类之外,其他任何类都无法访问这个成员。
任何可以肯定只是该类的一个“助手”方法的方法,都可以把它指定为private,以确保不会在包内的其他地方误用到它。

4、继承访问权限(protected)
将基类的某个特定成员的访问权限赋予派生类而不是所有类,可以使用protected。它也提供包访问权限,相同包内的其他类也可以访问protected元素。

//包路径 package com.thinkinjava.chapter06.dessert;public class Cookie {    public Cookie(){        System.out.println("Cookie Constructor");    }    //包访问权限    void bite(){        System.out.println("bite");    }}

这里写图片描述
上面的两个类在不同的包中,Cookie类有一个包访问权限方法bite()。Chocolate类继承Cookie类。同时继承了Cookie类中的public成员和包访问权限成员方法bite()。但是不能在Chocolate类中使用该方法bite()。它位于不同的包中,所以无法使用它,即使在继承的子类中存在该方法。但是将它改为protected访问权限就可以使用了。

访问权限总结:
这里写图片描述

类访问权限
类的访问权限的修饰词必须出现在关键字class之前。
每一个编译单元(文件)都只能有一个public类。而且public类的名称必须与该编译单元的文件名相匹配,包括大小写。但是在该编译单元中,也可以包括多个不带public的类,具有包访问权限:
这里写图片描述
图片中的Acctest类的成员的访问权限也都是适用的,在同包中其他类中创建该类的对象,并调用方法:
这里写图片描述

类既不可以是private的,也不可以是protected的。不可以被其他类创建。
这里写图片描述
但是在内部类中,可以使用private 和protected访问权限:
这里写图片描述

对于类的访问权限,只能是public或包访问权限。可以把构造器指定为private,从而阻止任何人创建该类的对象。但是你可以在本类的static方法中创建对象,因为与初始化的顺序有关:

//两种方式创建私有构造器的类的对象public class ClassAccess {    //构造器设置为private,    private ClassAccess(){    }    //可以通过static方法创建对象,且有且只有一个    public static ClassAccess makeObject(){        return new ClassAccess();    }    //也可以是static域,且有且只有一个    private static ClassAccess ca=new ClassAccess();    public static ClassAccess access(){        return ca;    }}
0 0
原创粉丝点击