Java Modifiers
Оновлено: 22.05.2023
Змінити
Наразі ви вже добре знайомі зі словом public key, яке з'являється майже у всіх наших прикладах:
public class Main
Ключове слово public є модифікатором доступу, тобто використовується для встановлення рівня доступу до класів, атрибутів, методів та конструкторів.
Ми ділимо модифікатори на дві групи:
Модифікатори доступу - керують рівнем доступу Модифікатори без доступу - не керують рівнем доступу, але надають іншу функціональність
Модифікатори доступу
Для класів ви можете використовувати public або default:
public
Для атрибутів, методів і конструкторів ви можете використовувати один з наведених нижче способів:
public
private
protected
Модифікатори без доступу
Для занять ви можете використовувати як підсумковий, так і реферативний матеріал:
final
abstract
Для атрибутів і методів ви можете використовувати один з наступних способів:
final
static
abstract
transient
synchronized
volatile
Фінал
Якщо вам не потрібна можливість перевизначати існуючі значення атрибутів, оголосіть атрибути як фінальні:
public class Main {
final int x = 10;
final double PI = 3.14;
public static void main(String[] args) {
Main myObj = new Main();
myObj.x = 50; // will generate an error: cannot assign a value to a final variable
myObj.PI = 25; // will generate an error: cannot assign a value to a final variable
System.out.println(myObj.x);
}
}
Статика
Статичний метод означає, що до нього можна отримати доступ без створення об'єкта класу, на відміну від public:
Приклад для демонстрації відмінностей між статичними та загальнодоступними методами:
static
public
public class Main {
// Static method
static void myStaticMethod() {
System.out.println("Static methods can be called without creating objects");
}
// Public method
public void myPublicMethod() {
System.out.println("Public methods must be called by creating objects");
}
// Main method
public static void main(String[ ] args) {
myStaticMethod(); // Call the static method
// myPublicMethod(); This would output an error
Main myObj = new Main(); // Create an object of Main
myObj.myPublicMethod(); // Call the public method
}
}
Анотація
Абстрактний метод належить до абстрактного класу і не має тіла. Тіло надається підкласом:
// Code from filename: Main.java
// abstract class
abstract class Main {
public String fname = "John";
public int age = 24;
public abstract void study(); // abstract method
}
// Subclass (inherit from Main)
class Student extends Main {
public int graduationYear = 2018;
public void study() { // the body of the abstract method is provided here
System.out.println("Studying all day long");
}
}
// End code from filename: Main.java
// Code from filename: Second.java
class Second {
public static void main(String[] args) {
// create an object of the Student class (which inherits attributes and methods from Main)
Student myObj = new Student();
System.out.println("Name: " + myObj.fname);
System.out.println("Age: " + myObj.age);
System.out.println("Graduation Year: " + myObj.graduationYear);
myObj.study(); // call abstract method
}
}