java访问控制符

本文详细介绍了Java的四种访问控制符:public、private、default和protected。public成员可以在任何地方被访问,private成员只能在当前类中访问,default(无修饰符)允许在同一包内的访问,而protected允许同包访问及子类访问。此外,还讨论了访问控制符在继承中的应用和限制。
摘要由CSDN通过智能技术生成


一、java访问控制符是什么?

Java 访问控制符. Java 中可以使用 访问控制符 来保护对类、变量、方法和构造方法的访问. Java 语言中有 4 种不同的访问权限. default ( 即缺省,什么也不写 ) 在同一包内可见,不使用任何控制符. 使用对象:类、接口、变量、方法.

二、java访问控制符分为哪几种

1.public

public(公共访问权限)这是一个最宽松的访问控制级别,如果一个成员(包括成员变量、方法和构造器等)或者一个外部类使用public访问控制符修饰,那么这个成员或外部类就可以被所有类访问,不管访问类和被访问类是否处于同一个包中,是否具有父子继承关系

  • public 访问控制符修饰的类、方法、构造方法和接口能够被任何其它类访问
  • 如果几个相互访问的 public 类分布在不同的包中,则需要导入相应 public 类所在的包
  • 由于类的继承性,类所有的公有方法和变量都能被其子类继承
public static void main(String[] arguments) {
   // ...
}

2.private

private(当前类访问权限) 如果类里的一个成员(包括成员变量、方法和构造器等)使用private访问控制符来修饰,则这个成员只能在当前类的内部被访问。很显然,这个访问控制符用于修饰成员变量最合适,使用它来修饰成员变量就可以把成员变量隐藏在该类的内部

  • 私有访问控制符是最严格的访问级别,声明为 private 的方法、变量和构造方法只能被所属类内部访问
  • 类和接口不能声明为 private
  • private 声明的变量只能通过类中公共的 getter 方法被外部类访问
  • private 访问控制符的使用主要用来隐藏类的实现细节和保护类的数据
public class Logger {
   private String format;
   public String getFormat() {
      return this.format;
   }
   public void setFormat(String format) {
      this.format = format;
   }
}

3.default

default(包(package)访问权限):如果类里的一个成员(包括成员变量、方法和构造器等)或者一个外部类不使用任何访问控制修饰,就称它为包访问权限的,default访问控制的成员或外部类可以被相同包下的其他类访问

  • 默认访问控制符声明的变量和方法,对同一个包内的类是可见的
  • 接口的变量都隐式声明为 public static final
  • 接口的方法默认情况下访问权限为 public
  • 变量和方法的声明可以不使用任何控制符
String version = "1.5.1";
boolean processOrder() {
   return true;
}

4.protected

protected(子类访问权限):如果一个成员(包括成员变量、方法和构造器等)使用protected访问控制符修饰,那么这个成员既可以被同一个包中的其他类访问,也可以被不同包中的子类访问。在通常情况下,如果使用protected来修饰一个方法,通常是希望其子类来重写这个方法

  • protected 访问控制符不能修饰类和接口
  • 方法和成员变量能够声明为 protected
  • 但是接口的成员变量和成员方法不能声明为 protected
  • 子类能访问 protected 控制符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量
class AudioPlayer {
   protected boolean openSpeaker(Speaker sp) {
      // 实现细节
   }
}

class StreamingAudioPlayer extends AudioPlayer {
   protected boolean openSpeaker(Speaker sp) {
      // 实现细节
   }
}

5.访问控制符之间的区别

访问控制符权限对比:
在这里插入图片描述

访问控制符级别从小到大排序:
在这里插入图片描述

三、访问控制和继承

Java 中的访问控制和继承有以下规则:

  • 父类中声明为 public 的方法在子类中也必须为 public
  • 父类中声明为 protected 的方法在子类中要么声明为 protected,要么声明为 public,不能声明为 private
  • 父类中声明为 private 的方法,不能够被继承
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值