Presentation is loading. Please wait.

Presentation is loading. Please wait.

1.00 Lecture 11 Scope and Access. Variable Lifecycles Instance (or object) variables – Created when their containing object is created – Initialized to.

Similar presentations


Presentation on theme: "1.00 Lecture 11 Scope and Access. Variable Lifecycles Instance (or object) variables – Created when their containing object is created – Initialized to."— Presentation transcript:

1 1.00 Lecture 11 Scope and Access

2 Variable Lifecycles Instance (or object) variables – Created when their containing object is created – Initialized to default if not explicitly initialized 0 for numbers, false for boolean, null to objects – Destroyed when Java® garbage collector finds there are no remaining active references to object Static (or class) variables – Created when class is first used in program – Initialized to default if not explicitly initialized 0 for numbers, false for boolean, null to objects – Usually exist for rest of program (unless unloaded) Local variables (or block variables) – Created in the statement where theyre defined – Not initialized by default. Contain unpredictable data – Destroyed when block is exited (at ending brace )

3 Variable Scope Scope: limiting the parts of the program where a variable or method is defined and visible – Prevents collisions between variables and methods in different parts of a program Variables are the big concern, methods are lesser problem – Limits effects of changes to smallest possible module or scope – Lets multiple people work on large programs simultaneously – Allows testing, bug fixing, maintenance to be done while limiting the new bugs introduced

4 Scope: Variables, Methods Local variables (in a method or block) – Exist from point of definition to end of block Blocks are defined by curly braces{ } Blocks are most often used to define: – Method body – Multiple statements in if-else and loop operations – Local variables exist only within own method No access is given to any other method – If local and instance variable have same name, the local variable hides the instance variable: Access the instance variable as: this.variableName;

5 Access: Variables, Methods Instance and static variables and methods (in a class) have 4 access modifiers: – Private: Access only to own class methods Data fields should be private, almost always – Public: Access to all methods, all classes Methods intended for other class use are public Methods for internal use only are private – Package: Access to methods of classes in same package (a package is a group of classes) This is the default, alas. Always specify scope explicitly No package keyword; its the default with no keyword – Protected: Used with inheritance (covered later) Like a private variable, except its visible to derived or subclasses (and, in Java®, to other classes in package)

6 Access: Packages If you add, at the top of your program package packageName; – This will place the classes in your source file into a package, along with any other source files with the same package declaration at the top Packages are placed in folders in your filesystem in Forte and on your Windows PC or Athena workstation – These classes will then have access to each others package-access methods and data fields – Use Fortes New Package feature as convenience To use the package in another class, add at the top of that class: import packageName.*;

7 Package Example package Lecture11PkgClass; public class PkgClass { public int publicInt; private int privateInt; int packageInt; // Package access public PkgClass(int pu, int pr, int pa) { publicInt= pu; privateInt= pr; packageInt= pa; } public void publicPrint( ) { System.out.println("Public"); } private void privatePrint() { System.out.println("Private"); } void packagePrint() { // Package access System.out.println("Package"); }

8 Package Test Class 1 package Lecture11PkgClass; // In same package public class PkgTest { public static void main(String[ ] args) { PkgClass object1= new PkgClass(1, 2, 3); int pu= object1.publicInt; int pr= object1.privateInt; int pa=object1.packageInt; object1.publicPrint(); object1.privatePrint(); object1.packagePrint(); System.exit(0); } // Which statements will not compile?

9 Package Test Class 1 package Lecture11PkgClass; // In same package public class PkgTest { public static void main(String[ ] args) { PkgClass object1= new PkgClass(1, 2, 3); int pu= object1.publicInt; // int pr= object1.privateInt; No access! int pa= object1.packageInt; object1.publicPrint(); // object1.privatePrint(); No access! object1.packagePrint(); System.exit(0); }

10 Package Test Class 2 package Lecture11TestPkg; // Different package (or none) import Lecture11PkgClass.*; // Import desired package public class PkgTest { public static void main(String[ ] args) { PkgClass object1= new PkgClass(1, 2, 3); int pu= object1.publicInt; int pr= object1.privateInt; int pa=object1.packageInt; object1.publicPrint(); object1.privatePrint(); object1.packagePrint(); System.exit(0); } // Which statements will not compile?

11 Package Test Class 2 package Lecture11TestPkg; // Different package (or none) import Lecture11PkgClass.*; // Import desired package public class PkgTest { public static void main(String[ ] args) { PkgClass object1= new PkgClass(1, 2, 3); int pu= object1.publicInt; // int pr= object1.privateInt; No access // int pa= object1.packageInt; No access object1.publicPrint(); // object1.privatePrint(); No access // object1.packagePrint(); No access System.exit(0); }

12 Searching packages Java® always looks in the default package for classes searching imported packages of form java.util.Vector- A classes's full name can be used, as in Vector v = new java.util.Vector();

13 Inner classes Java® allows you to define classes within another class An inner class is only defined within its outer class Inner classes cannot have static members

14 Inner class example public class TopLevelClass { private int x; // more code here class InnerClass { private int y; y = x // more code here }

15 public class TopLevelClass { private int x=4; public static void main(String[ ] arg) { new TopLevelClass();} public TopLevelClass() { InnerClass inst1 = new InnerClass(); System.out.println("Outer = "+x+ "Inner= " + inst1.y); x = 5; InnerClass inst2 = new InnerClass(); System.out.println("Outer = "+x+ "Inner = inst2.y); } private class InnerClass { private int y; public InnerClass() { y = x*x; } }

16 Uses for inner classes Sometimes used for very specialized classes that aren't intended for reuse Example: Items that are intended to be used on a list, where each item is an instance of an inner class. Java® is a trademark or registered trademark of Sun Microsystems, Inc. In the United States and other countries.

17

18


Download ppt "1.00 Lecture 11 Scope and Access. Variable Lifecycles Instance (or object) variables – Created when their containing object is created – Initialized to."

Similar presentations


Ads by Google