Java中的四种访问修饰符:public、default、protect和private

前言

Java中有四种访问修饰符用于控制类、接口、变量和方法的封装程度。这四种修饰符分别为:

private   私有的,类可见性
package/friendly/default 包级别的/友好的/默认的,包可见性
protected 受保护的,不同包,子父类可见性
public    公共的,项目可见性

其中,变量和方法可以用四种修饰符修饰,而类和接口仅能用public和default修饰。

类之间的关系

类和类之间的关系有如下几种:
以Hero为例
自身:指的是Hero自己
同包子类:ADHero这个类是Hero的子类,并且和Hero处于同一个包下
不同包子类:Support这个类是Hero的子类,但是在另一个包下
同包类: GiantDragon 这个类和Hero是同一个包,但是彼此没有继承关系
其他类:Item这个类,在不同包,也没有继承关系的类
在这里插入图片描述

private 私有的

使用private修饰属性
自身:是可以访问的
同包子类:不能继承
不同包子类:不能继承
同包类:不能访问
其他包类:不能访问

注: 红色字体,表示不可行
在这里插入图片描述

package charactor;
import property.Weapon;
 
public class Hero {
    //属性id是private的,只有Hero自己可以访问
    //子类不能继承
    //其他类也不能访问
    private int id;
     
    String name;
    float hp;
    float armor;
    int moveSpeed;
 
    public void equip(Weapon w) {
    }
}

protected 受保护的

受保护的修饰符
protected float hp;
在这里插入图片描述

package charactor;
import property.Weapon;
 
public class Hero {
    private int id;
 
    String name;
 
    // protected饰符的属性 hp
    // 自己可以访问
 
    // 同包子类可以继承
    // 不同包子类可以继承
 
    // 同包类可以访问
    // 不同包类不能访问
    protected float hp;
    float armor;
    int moveSpeed;
 
    public void equip(Weapon w) {
    }
}

public 公共的

公共的修饰符
public String name; 姓名
任何地方,都可以访问
在这里插入图片描述

package charactor;
import property.Weapon;
 
public class Hero {
    private int id;
 
    // public的属性 name
    // 自己可以访问
 
    // 同包子类可以继承
    // 不同包子类可以继承
 
    // 同包类可以访问
    // 不同包类可以访问
    public String name;
 
    protected float hp;
    float armor;
    int moveSpeed;
 
    public void equip(Weapon w) {
    }
}

总结

在这里插入图片描述

修饰符的使用场景

那么什么情况该用什么修饰符呢?
从作用域来看,public能够使用所有的情况。 但是大家在工作的时候,又不会真正全部都使用public,那么到底什么情况该用什么修饰符呢?

    属性通常使用private封装起来
    方法一般使用public用于被调用
    会被子类继承的方法,通常使用protected
    package用的不多,一般新手会用package,因为还不知道有修饰符这个东西

再就是作用范围最小原则
简单说,能用private就用private,不行就放大一级,用package,再不行就用protected,最后用public。 这样就能把数据尽量的封装起来,没有必要露出来的,就不用露出来了。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值