📅  最后修改于: 2023-12-03 15:16:19.484000             🧑  作者: Mango
Java中的受保护关键字可以用于修饰类、属性和方法,保护它们不被其他类访问。在本文中,我们将讨论Java中受保护的关键字及其示例用法。
protected
关键字只能在同一包中或者同一子类内部访问,它的作用是限制类的内部和继承链中的访问。protected
关键字可以用来修饰类、成员变量和方法。
使用protected
关键字修饰类,可以使该类只能在同一包或者其他包中的子类中使用。例如:
package com.example;
protected class Foo {
// ...
}
在该示例中,类Foo
只能在com.example
包或这个包的子类中使用。
使用protected
关键字修饰成员变量,可以使该成员变量只能在同一包或者其他包中的子类中使用。例如:
package com.example;
public class Foo {
protected String name;
}
在该示例中,类Foo
中的成员变量name
只能在com.example
包或这个包的子类中使用。
使用protected
关键字修饰方法,可以使该方法只能在同一包或者其他包中的子类中使用。例如:
package com.example;
public class Foo {
protected void foo() {
// ...
}
}
在该示例中,类Foo
中的方法foo()
只能在com.example
包或这个包的子类中使用。
下面给出一个使用受保护关键字的示例:
package com.example;
public class Animal {
protected String name;
protected void eat() {
System.out.println(name + " is eating.");
}
protected void sleep() {
System.out.println(name + " is sleeping.");
}
}
package com.example;
public class Cat extends Animal {
public Cat(String name) {
this.name = name;
}
public void play() {
System.out.println(name + " is playing.");
}
}
package com.example;
public class Main {
public static void main(String[] args) {
Cat cat = new Cat("Tom");
cat.eat(); // Tom is eating.
cat.sleep(); // Tom is sleeping.
cat.play(); // Tom is playing.
}
}
在该示例中,Animal
类中的成员变量name
和方法eat()
、sleep()
都是受保护的,它们只能在Animal
类或者Animal
的子类中访问。Cat
类继承自Animal
类,并且在Cat
类中使用了Animal
类中受保护的成员变量和方法。Main
类创建了一个Cat
对象并调用了Cat
类中的方法,包括其继承的受保护方法。
总结:受保护关键字可以用于保护类的内部和继承链中的访问,它可以限制类的访问范围,提高程序的安全性和可靠性。在编写Java程序时,合理使用受保护关键字可以使程序更加健壮,减少bug的产生。