Java有哪些访问修饰符呢?

转自:

Java有哪些访问修饰符呢?

Java语言中访问修饰符用于设置类,变量,方法和构造函数的访问级别。

四个不同的访问修饰符为:

  • 无关键字(不指定修饰符):对包可见,不需要修饰符。
  • private :仅对类内部可见。
  • public :公开,对外部可见。
  • protected :对包和所有子类可见。

1. 默认访问修饰符 - 无关键字

默认访问修饰是指没有为类,字段,方法等显式声明访问修饰符。
声明没有任何访问控制修饰符的变量或方法可用于同一包中的任何其他类。
接口中的字段隐式为public static final
接口中的方法默认为public

如:

可以在没有任何修饰符的情况下声明变量和方法,如

class testClass{
    String v= "0.01";

    boolean existsFlag() {
       return true;
    }
}

2. 私有访问修饰符 - private

声明为private的方法,变量和构造函数只能在声明的类本身中访问。
专用访问修饰符是限制性最强的访问级别。
类和接口不能声明为:private
如果类中存在公共getter方法,
则可以在类中将变量声明为private
使用private修饰符是对象封装自身并隐藏来自外部世界的数据的主要方式。

如:
以下类使用private访问控制 -

public class testClass{
   private String name;

   public String getName() {
      return this.name;
   }

   public void setName(String name_) {
      this.name= name_;
   }
}

这里,testClass类的name变量是private
  所以其他类无法直接检索或设置它的值。

   为了使这个变量对外界可用,testClass类中定义了两个公共方法:getName()用于返回format的值,setName(String)用于设置它的值。

3. 公共访问修饰符 - public

可以从任何其他类访问使用public声明的类,方法,构造函数,接口等。
 所以,可以从属于Java任何类访问在公共类中声明的字段,方法,块。

  但是,如果尝试访问的公共类位于不同的包中,则仍需要导入公共类。
由于类继承,类的所有公共方法和变量都由其子类继承。

如:

以下方法使用public访问控制 -

public static void main(String[] arguments) {
   // ...
}

应用程序的main()方法必须声明为public
否则Java解释器无法调用它来运行该类。

4. 受保护的访问修饰符 - protected

在超类中声明受保护的变量,方法和构造函数只能由其他包中的子类或受保护成员类的包中的任何类访问。
受保护的访问修饰符不能应用于类和接口。 方法,字段可以声明为protected
但是接口中的方法和字段不能声明为protected
受保护的访问使子类有机会使用辅助方法或变量,
同时防止非相关类尝试使用它。


以下父类使用protected访问控制,以允许它的子类覆盖openSpeaker()方法 -

class testClass{
   protected boolean openValue(String t) {
      // 实现详细代码...
   }
}

class testClass2{
   boolean openValue(String t) {
      // 实现详细代码...
   }
}

Java

在这里,如果将openValue()方法定义为private
  那么它将无法从testClass以外的任何其他类访问。
如果将类定义为public,那么它将被所有外部世界类访问。
但这里的目的是仅将此方法暴露给它的子类,所以只使用protected修饰符

访问控制和继承

强制执行以下继承方法规则 -

    • 在超类中声明为public的方法也必须在所有子类中都是public
    • 在超类中声明为protected的方法必须在子类中也要声明为:protectedpublic; 不能声明为:private
    • 声明为private的方法根本不能被继承,因此没有规则。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值