1 / 16

Access Modifiers

Access Modifiers. Control which classes use a feature Only class-level variables may be controlled by access modifiers Modifiers 1. public 2. protected 3. private Non-inner classes can only be public. Friendly. Features with no access modifier default to friendly

caroun
Download Presentation

Access Modifiers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Access Modifiers • Control which classes use a feature • Only class-level variables may be controlled by access modifiers • Modifiers 1. public 2. protected 3. private • Non-inner classes can only be public

  2. Friendly • Features with no access modifier default to friendly • Friendly features are accessible to any class in the same package • Classes outside the package may not access these features • Friendly classes may be subclassed but their variables/methods are not accessible by the subclass

  3. Modifiers • public • Can be used in any Java program without restriction • private • may only be used by the instance of the class that declares the variable or method • protected • only variables, methods, and inner classes can be declared protected • available to all classes in the same package • available to all subclasses( even those in different packages )

  4. Overriding Methods • Methods may not be overwritten to be more private Private Friendly Protected Public

  5. Final Modifier • Final features may not be overwritten • A final class may not be subclassed • A final variable cannot be changed once it has been assigned a value

  6. Final Modifier Example class Walrus { int weight; Walrus( int w ) { weight = w }; } class Tester { final Walrus w1 = new Walrus(1500); void test() { w1 = new Walrus(1400); // Illegal w1.weight = 1800; // Legal } }

  7. Abstract Modifier • An abstract class cannot be instantiated • This is a way to defer implementation to subclasses • An class with one more methods declared abstract cannot be instantiated • A class that is declared to implement an interface but does not implement all the methods of that interface must be abstract • Similar to virtual in C++

  8. Abstract Example abstract class Stack { protected int count = 0; public abstract void push( Object o ); public abstract void pop(); public abstract Object top(); public abstract boolean isFull(); public boolean isEmpty() { return count==0; } }

  9. Static Modifier • Associated with a class, not a particular instance of a class public class StaticTest { static int x = 0; StaticTest() { x++; } } No matter how many instances of StaticTest we have the ‘x’ variable is the same for all

  10. Accessing Static Variables StaticTest st = new StaticTest(); st.x = 69; OR StaticTest.x = 69

  11. More about Static • Static methods cannot use non-static features of their class • They can access the class’s static data • Since static methods are not associated with an instance of a class there is no this variable

  12. Static Initializers public class Demo { int x = 5; static { x = 69; } public static void main( String[] ) { System.out.println( ‘X = ‘ + x ); } } What is the value printed?

  13. Native modifier • Can only refer to methods • Indicates that the body of the method is to be found elsewhere • Namely in a file in another language • Call to native method is the same as if it was implemented in Java

  14. Transient modifier • Only applies to variables • Transient variables will not be serialized • Transient variables cannot be final or static

  15. Synchronized modifier • Used to control critical code in multi-threaded programs • Covered in chapter 7

  16. Volatile modifier • Not on exam • Used in multiprocessor environments • Applies only to variables

More Related