Chapter 9 Objects and Classes: OO Programming Concepts Creating Objects and Object Reference Variables
Chapter 9 Objects and Classes: OO Programming Concepts Creating Objects and Object Reference Variables
Chapter 9 Objects and Classes: OO Programming Concepts Creating Objects and Object Reference Variables
OO Programming Concepts
Creating Objects and Object Reference Variables
– Differences between primitive data type and object type
– Automatic garbage collection
Constructors
Modifiers (public, private and static)
Data Field
data field 1
radius = 5
... State
Method
data field n findArea
method 1
... Behavior
method n
Class and Objects
double findArea()
{
return radius*radius*3.14159;
}
}
Declaring Object Reference Variables
ClassName objectName;
Example:
Circle myCircle;
Creating Objects
objectName = new ClassName();
Example:
myCircle = new Circle();
Example:
Circle myCircle = new Circle();
Differences between variables of
primitive Data types and object types
c: Circle
Created using
new Circle() radius = 1
Copying Variables of Primitive
Data Types and Object Types
Primitive type assignment Object type assignment
i=j c1 = c2
i 1 i 2 c1 c1
j 2 j 2 c2 c2
radius = 5 radius = 9
Garbage Collection
As shown in the previous
figure, after the assignment
statement c1 = c2, c1 points
to the same object referenced
by c2. The object previously
referenced by c1 is no longer
useful. This object is known
as garbage. Garbage is
automatically collected by
JVM.
Garbage Collection, cont
TIP: If you know that an
object is no longer needed,
you can explicitly assign
null to a reference
variable for the object.
The Java VM will
automatically collect the
space if the object is not
referenced by any variable.
Accessing Objects
Referencing the object’s data:
objectName.data
myCircle.radius
TestCircle Run
Constructors
Circle(double r)
{
radius = r; Constructors are a
}
special kind of
Circle() methods that are
{ invoked to construct
radius = 1.0; objects.
}
TestCircleWithConstructors Run
Visibility Modifiers and
Accessor Methods
By default, the class, variable, or data can be
accessed by any class in the same package.
public
The class, data, or method is visible to any class in any
package.
private
The data or methods can be accessed only by the declaring
class.
The get and set methods are used to read and modify private
properties.
Reference Data Fields and null
Value
class Student {
String name; //default value is null
int age; //default value is 0
boolean isScienceMajor; //default value is false
char gender; //default value is ‘\u0000’
}
Example 6.3
Using the private Modifier
and Accessor Methods
TestCircleWithAccessors Run
Passing Objects to Methods
TestPassingObject Run
Instance
Variables, and Methods
circle1:Circle 1 radius
instantiate -radius = 1
radius is an instance CircleWithStaticVariable -numOfObjects = 2
variable, and
numOfObjects is a -radius
class variable -numOfObjects
2 numOfObjects
+getRadius(): double instantiate
+setRadius(radius: double): void circle2:Circle
+getNumOfObjects(): int
+findArea(): double
-radius = 5 5 radius
-numOfObjects = 2
Example 6.5
Using Instance and Class Variables
and Method
Objective: Demonstrate the roles of
instance and class variables and their
uses. This example adds a class variable
numOfObjects to track the number of
Circle objects created.
… Circle object 1
TotalArea Run
Class Abstraction
Class abstraction means to separate class
implementation from the use of the class. The
creator of the class provides a description of the
class and let the user know how the class can be
used. The user of the class does not need to
know how the class is implemented. The detail
of implementation is encapsulated and hidden
from the user.
Java API and Core Java classes
java.lang
Contains core Java classes, such as numeric
classes, strings, and objects. This package is
implicitly imported to every Java program.
java.awt
Contains classes for graphics.
java.applet
Contains classes for supporting applets.
Java API and Core Java classes,
cont.
java.io
Contains classes for input and output
streams and files.
java.util
Contains many utilities, such as date.
java.net
Contains classes for supporting
network communications.
Java API and Core Java classes,
cont.
java.awt.image
Contains classes for managing bitmap images.
java.awt.peer
Platform-specific GUI implementation.
Others:
java.sql
java.rmi