【JAVA基础篇】访问权限

所谓访问权限,指的是本类的成员变量、成员方法和内部类对其他类的可见性。

四种访问权限

Java一共有四种访问权限,按照权限由大到小分别为public、protected、default和private,如果省略了访问修饰符,那访问权限就是defualt。四种访问权限的含义和权限控制见下面表格:

访问权限含义本类本包的类非本包子类非本包非子类
public公共的
protected保护访问权限
default包访问权限
private私有的

注意:所谓的访问,有两种方式,直接访问和通过对象访问。

举例说明

基类SupClass

package com.cc.accessright;
/**
 * 
 * @描述: 父类
 * @版权: Copyright (c) 2019 
 * @作者: cc
 * @版本: 1.0 
 * @创建日期: 2019年5月28日 
 * @创建时间: 上午11:02:06
 */
public class SupClass
{
    public void publicMethod(){
        System.out.println("=============publicMethod=============");
    }
    
    protected void protectedMethod(){
        System.out.println("=========protectedMthod===========");
    }
    
    void defaultMethod(){
        System.out.println("=========defaultMethod========");
    }
    
    private void privateMethod(){
        System.out.println("=========privateMethod========");
    }
}

子类SubClass

package com.cc.accessright.demo;

import com.cc.accessright.SupClass;
/**
 * 
 * @描述: 与父类不同包的子类
 * @版权: Copyright (c) 2019 
 * @作者: cc
 * @版本: 1.0 
 * @创建日期: 2019年5月28日 
 * @创建时间: 上午11:01:28
 */
public class SubClass extends SupClass
{
    public static void main(String[] args)
    {
        SupClass supClass = new SupClass();
        supClass.publicMethod();//子类通过父类对象能访问父类的public成员,其他访问级别的成员不能访问
    }
    
    public void subClassMethod1(){
        //子类可以直接访问父类的public、protected,其他访问级别的成员不能访问
        publicMethod();
        protectedMethod();
    }
}

同包的类PackageClass

package com.cc.accessright;
/**
 * 
 * @描述: 同包的类
 * @版权: Copyright (c) 2019 
 * @作者: cc
 * @版本: 1.0 
 * @创建日期: 2019年5月28日 
 * @创建时间: 上午11:04:14
 */
public class PackageClass
{
    
    public static void main(String[] args)
    {
        //通过对象访问public、protected和default方法,不能访问private级别的成员
        SupClass supClass = new SupClass();
        supClass.publicMethod();
        supClass.protectedMethod();
        supClass.defaultMethod();
    }
    
}

其他

外部类访问权限只能是public或者default,但一个Java文件最多只能有一个public修饰的类,且文件名必须跟public修饰的类类名相同。当Java文件不存在public修饰的类时,文件名可以随意取。

接口的成员变量只能是public static final修饰的(可以省略),成员方法不同的JDK版本有差异:JDK1.6实测:成员方法只能是public abstract修饰的(可以省略);JDK1.8实测: 成员方法只能是public修饰的(可以省略),另外还可以使用abstract, default, static和strictfp来修饰,其中abstract,default,static互斥,使用default或者static时必须提供方法的实现,strictfp不能单独使用,要配合default或者static一起使用。

重写或者实现方法时,访问权限必须比父类大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值