目录
1.访问修饰符
2.非访问修饰符
3.应用实例
4.继承与访问控制
5.小结
6.代码示例
public修饰符示例
private修饰符示例
protected修饰符示例
static和final修饰符示例
Java修饰符主要分为访问修饰符和非访问修饰符两大类。通过这些修饰符,可以控制类、方法、变量的访问级别以及其他特性,实现封装、继承和多态等面向对象编程的核心概念。
1.访问修饰符
- default(默认):不使用任何关键字,使得类、变量、方法在同一包内可见。
- private:最严格的访问级别,只允许在同一个类内访问。
- public:最宽松的访问级别,允许任何其他类访问。
- protected:允许同一包内的类和所有子类访问。
2.非访问修饰符
- static:指示修饰符属于类,而不是实例。
- final:用于声明常量,或者声明不可继承的类、不可重写的方法。
- abstract:用于创建抽象类和抽象方法。
- synchronized:指示某个方法在同一时刻只能被一个线程访问。
- transient:预防字段的序列化。
- volatile:确保变量的修改对所有线程立即可见,用于多线程环境。
3.应用实例
- public class 示例中,
ClassName
类被公开访问,任何其他类都可以访问它。 - private boolean 示例,
myFlag
变量只能在它所属的类内部被访问。 - static final 示例,
weeks
和BOXWIDTH
是类变量,属于类本身,所有实例共享,且其值不可修改。 - protected static final 示例,
BOXWIDTH
既是类变量也拥有受保护的访问级别,同一包内或子类可访问。
4.继承与访问控制
在继承中,父类的 public
方法在子类中也必须为 public
;protected
方法可以是 protected
或 public
;private
方法不能被继承。
5.小结
Java修饰符的使用极大地增强了代码的安全性、复用性和封装性。通过合理应用这些修饰符,可以设计出结构清晰、耦合度低、易于维护和扩展的程序。
6.代码示例
public修饰符示例
public class Person {private String name; // 私有变量,只能在Person类内部访问// 构造函数public Person(String name) {this.name = name;}// 允许外部通过public方法访问namepublic String getName() {return name;}public void setName(String name) {this.name = name;}
}class TestPerson {public static void main(String[] args) {Person person = new Person("John");System.out.println(person.getName()); // 输出"John"}
}
private修饰符示例
public class Person {private String name; // 私有变量,只能在Person类内部访问// 构造函数public Person(String name) {this.name = name;}// 允许外部通过public方法访问namepublic String getName() {return name;}public void setName(String name) {this.name = name;}
}class TestPerson {public static void main(String[] args) {Person person = new Person("John");System.out.println(person.getName()); // 输出"John"}
}
protected修饰符示例
class Parent {protected int count; // 受保护变量,同包或子类可见protected void display() { // 受保护方法,同包或子类可见System.out.println("Count: " + count);}
}public class Child extends Parent {public Child() {count = 10; // 访问继承自父类的受保护变量}public void show() {display(); // 调用继承自父类的受保护方法}public static void main(String[] args) {Child child = new Child();child.show(); // 输出"Count: 10"}
}
static和final修饰符示例
public class Constants {public static final double PI = 3.14159; // 类常量,所有实例共享,值不可修改public static void showPi() {System.out.println("PI: " + PI);}
}class TestConstants {public static void main(String[] args) {System.out.println(Constants.PI); // 直接通过类名访问static变量Constants.showPi(); // 直接通过类名调用static方法,输出"PI: 3.14159"}
}