DOC PREVIEW
Penn CIT 591 - Access

This preview shows page 1-2-3-4-5-6 out of 18 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 18 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 18 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 18 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 18 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 18 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 18 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 18 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

AccessOverviewInstance and class variablesMethod variablesExample: a “Rabbit” classStatementsStatements must be in methods (or in constructors)Access from inside a classAccessing from outside a class, 1Accessing from outside a class, 2ResponsibilityLoss of controlprivate variables and methodsLevels of accessLevels of access, IIGetters and settersImmutable objectsThe EndJan 14, 2019AccessOverviewQuestions covered in this talk:How do we access fields and methods?Why have access restrictions?What can have access restrictions?How do we provide or restrict access?Instance and class variablesYou can declare variables within a classThese variables are called instance variables, or fieldsEvery object of that class has its own copy of those fieldsThe fields describe something about the objectYou can also declare static variables within a classThere is only one of each static variableA static variable is also called a class variableThe static variable describes something about the class as a wholeMethod variablesYou can declare variables within a method or within a constructorThese are called method variables, not fieldsMethod variables are basically used for computationMethod variables are strictly temporary, and are used only within that methodWhen a method returns (completes), all its variables are discardedExample: a “Rabbit” classclass Rabbit { static int population; // class variable (counts Rabbits) double hunger; //instance variable double fear; // instance variable double courage = 0.75; // instance variable void eat() { double temp; // method variable temp = courage * hunger; if (temp > fear) { System.out.println(“Eating!”); hunger = hunger - 1; } }}StatementsYou can declare variables inside a class or inside a method or a constructorYou can put statements (executable code) only within methods and constructors, not inside a classDeclarations with initializations are still declarations, not statementsStatements must be in methods(or in constructors) class Rabbit { double hunger; // OK--declaration double fear = 5.0; // OK--still a declaration hunger = 5.0; // illegal--assignment statement Rabbit ( ) { hunger = 5.0; // OK—statement in a constructor} void eat ( ) { hunger = hunger - 1; // OK—statement in a method} }Access from inside a classInside a class, you can access other fields and methods inside the class just by naming themExample:class Person { int age; void birthday( ) { age = age + 1; } void growOlder( ) { birthday( ); }}Equivalently, you can use the keyword this: void birthday( ) { this.age = this.age + 1; } void growOlder( ) { this.birthday( ); }Accessing from outside a class, 1Outside a class (from some other class) you access instance variables and methods byNaming the object you want to talk toPutting a dotNaming the variable or methodExample:// if NOT in class Person, say:if (john.age < 75) john.birthday();Inside the class, the keyword this means “this object”:if (this.age < 75) this.birthday(); // "this" may mean johnAccessing from outside a class, 2Outside a class (from some other class) you access class variables and methods byNaming the class you want to talk toPutting a dotNaming the variable or methodExamples: Person.population = Person.population + 1; x = Math.abs(y);ResponsibilityIn Java, objects are considered to be activeThey have behaviorsThey are responsible for their own dataData (variables) must be kept consistentExample: population should never be negativeIn order for a class or object to be responsible for its own data, it must keep control of that dataLoss of controlSuppose a Rabbit object, bugsBunny, has a variable named hungerInside the class, this method is fine: void eat ( ) { hunger = hunger - 1; }From outside the class, the following is legal: bugsBunny.hunger = bugsBunny.hunger - 1;But should we be allowed to “reach inside” a rabbit?The class needs to protect itself from errors in other classes (and from malicious behavior)private variables and methodsIf you declare a variable or method to be private, that variable or method can only be accessed from within the classprivate methods also make sense, e.g. digest()If you declare a variable or method to be public, then any code anywhere can access itTypically, a class or object has bothMethods for use by the rest of the programMethods and variables that it alone should controlLevels of accessprivate -- access only from within the class“package” -- access from within the class, or from any class in the same directory (“folder”)This is the default; there is no package keywordprotected -- access from within the class, or from within any subclass, or from any other class in the same directorypublic -- access from anywhere at allLevels of access, IITo make a variable or method visibleOnly within this class: privateFrom this class and its subclasses: not possibleFrom this class and its subclasses, and any other class in this directory: “package” (default)From this subclass and its subclasses, and any other classes in this directory: protectedFrom anywhere: publicGetters and settersOne way to control access is via getters and setters: class Rabbit { private double hunger; // getterpublic double getHunger() { return hunger;} // setterpublic void setHunger(double hunger) { this.hunger = hunger;}This seems silly, but it’s much safer and more flexibleImmutable objectsSuppose a Planet has a mass, and you want to be able to see its mass but not change it: class Planet { private long mass; // ConstructorPlanet(long mass) { this.mass = mass;} //getterlong getMass() { return mass;} // Notice there is no setter! }The


View Full Document

Penn CIT 591 - Access

Documents in this Course
Stacks

Stacks

11 pages

Arrays

Arrays

30 pages

Arrays

Arrays

29 pages

Applets

Applets

24 pages

Style

Style

33 pages

JUnit

JUnit

23 pages

Java

Java

32 pages

Access

Access

18 pages

Methods

Methods

29 pages

Arrays

Arrays

32 pages

Methods

Methods

9 pages

Methods

Methods

29 pages

Vectors

Vectors

14 pages

Eclipse

Eclipse

23 pages

Vectors

Vectors

14 pages

Recursion

Recursion

24 pages

Animation

Animation

18 pages

Animation

Animation

18 pages

Static

Static

12 pages

Eclipse

Eclipse

23 pages

JAVA

JAVA

24 pages

Arrays

Arrays

29 pages

Animation

Animation

18 pages

Numbers

Numbers

21 pages

JUnit

JUnit

23 pages

Applets

Applets

24 pages

Methods

Methods

30 pages

Buttons

Buttons

20 pages

Java

Java

31 pages

Style

Style

28 pages

Style

Style

28 pages

Load more
Download Access
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Access and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Access 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?