Java 教程

Java控制语句

面向对象编程

Java内置类

Java文件处理

Java错误和异常

Java多线程

Java同步

Java网络编程

Java集合

Java接口

Java数据结构

Java集合算法

高级Java

Java杂项

Java APIs和框架

Java类引用

Java有用资源

Java - protected关键字



Java提供许多访问修饰符来设置类、变量、方法和构造函数的访问级别。四个访问级别是:

  • 对包可见,这是默认值。不需要修饰符。

  • 仅对类可见(private)。

  • 对全世界可见(public)。

  • 对包和所有子类可见(protected)。

访问控制和继承

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

  • 在超类中声明为public的方法在所有子类中也必须为public。

  • 在超类中声明为protected的方法在子类中必须为protected或public;它们不能为private。

  • 私有方法根本不会被继承,因此没有针对它们的规则。

受保护的访问修饰符 - protected

在超类中声明为protected的变量、方法和构造函数只能被其他包中的子类或受保护成员类的包中的任何类访问。

protected访问修饰符不能应用于类和接口。方法、字段可以声明为protected,但是接口中的方法和字段不能声明为protected。

protected访问使子类有机会使用辅助方法或变量,同时阻止不相关的类尝试使用它。

示例

以下类使用受保护的访问控制。我们使用了如下所示的受保护字段:

package com.tutorialspoint;

public class JavaTester {

   protected String format;

   public String getFormat() {
      return this.format;
   }

   public void setFormat(String format) {
      this.format = format;
   } 

   public void print() {
      System.out.println(this.format);
   }

   public static void main(String args[]) {
      JavaTester tester = new JavaTester();
	  tester.format = "XML";
   }	   
}

输出

XML

这里,Logger类的format变量是受保护的,因此可以直接使用Logger类的引用来访问此变量。

但是,作为最佳实践,为了使此变量可供外部世界使用,我们定义了两个公共方法:getFormat(),它返回format的值,以及setFormat(String),它设置其值。

以下是protected访问标识符的另一个示例。我们在超类中定义了一个受保护的字段。如果字段/方法受保护,则子类可以继承它。

示例

package com.tutorialspoint;

class Logger {
   protected String format;

   public void print() {
      System.out.println(this.format);
   }
}

public class JavaTester extends Logger {   
   public static void main(String args[]) {
      JavaTester tester = new JavaTester();

      tester.format = "XML";
      tester.print();
   }	   
}

输出

XML
java_basic_syntax.htm
广告
© . All rights reserved.