Modifiers of field, method:
public
- is visible everywhere
private
- is visible only in owner class
protected
- is visible in owner class and subclass but only in the same package (and sub-package)
no-modifier (also known as package-private)
- is visible in owner class and subclass in the same package (not in sub-package)
EXAMPLES:
Modifier: public
package test; class Car { public String brand; // visible everywhere public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } }
Possible use:
package test; import test.Car; public class Main { public static void main(String[] args) { Car car = new Car(); tc.brand = "Opel"; // OK // OR tc.setBrand("Opel") // OK } }
Modifier: private
package test; class Car { private String brand; // visible only in own class public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } }
Possible use:
package test; import test.Car; public class Main { public static void main(String[] args) { Car car = new Car(); tc.brand = "Opel"; // field is not visible (Exception in thread "main" java.lang.Error: Unresolved compilation problems: ) // But you can do that way tc.setBrand("Opel") // OK } }
Modifier: protected
package test; class Car { protected String brand; // visible only in package "test" and also in each sub-package of "test" public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } }
Second class in sub-package
package test.subtest; class SportCar extends Car { }
Possible use:
package test; import test.Car; import test.SportCar; public class Main { public static void main(String[] args) { Car car = new Car(); tc.brand = "Opel"; // OK SportCar sportCar = new SportCar(); sportCar.brand = "Ferrari"; // OK } }
Modifier: no-modifier (package-private)
package test; class Car { String brand; // visible only in package "test" (not in sub-package of "test") public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } }
Second class in sub-package
package test.subtest; class SportCar extends Car { }
Possible use:
package test; import test.Car; import test.subtest.SportCar; public class Main { public static void main(String[] args) { Car car = new Car(); tc.brand = "Opel"; // OK SportCar sportCar = new SportCar(); sportCar.brand = "Ferrari"; // field is not visible } }
Reference:
Java official tutorial
No comments:
Post a Comment