Object Concepts
Object Concepts
An object contains both data and methods that manipulate that data
An object is active, not passive; it does things An object is responsible for its own data
But: it can expose that data to other objects
And methods:
eat, hide, run, dig
Example: a CheckingAccount, with operations deposit, withdraw, getBalance, etc. Classes enforce this bundling together
Example of a class
class Employee { // fields String name; double salary; // a method void pay () { System.out.println("Pay to the order of " + name + " $" + salary); } }
Approximate Terminology
instance = object field = variable method = function sending a message to an object = calling a function These are all approximately true
Dialog FileDialog
C++ is different
In C++ there may be more than one root
but not in Java!
In C++ an object may have more than one parent (immediate superclass)
but not in Java!
Example of inheritance
class Person { String name; String age; void birthday () { age = age + 1; } } class Employee extends Person { double salary; void pay () { ...} }
Every Employee has a name, age, and birthday method as well as a salary and a pay method.
Outside a class, you need to say which object you are talking to
if (john.age < 75) john.birthday ();
If you don't have an object, you cannot use its fields or methods!
this is like an extra parameter to the method You usually don't need to use this
class Dog { ... } class Poodle extends Dog { ... } Dog myDog; Dog rover = new Dog (); Poodle yourPoodle; Poodle fifi = new Poodle (); myDog = rover; yourPoodle = fifi; myDog = fifi; yourPoodle = rover; yourPoodle = (Poodle) rover;
You can write your own constructors; but if you dont, Java provides a default constructor with no arguments
It sets all the fields of the new object to zero If this is good enough, you dont need to write your own
The syntax for writing constructors is almost like that for writing methods
Now you can only create Employees with names This is fair, because you can only create Persons with names
It is poor style to have the same code more than once If you call this(...), that call must be the first thing in your constructor
Each object is responsible for its own data Access control lets an object protect its data We will discuss access control shortly
There is exactly one copy of a class variable, not one per object Use the special keyword static to say that a field or method belongs to the class instead of to objects
This way the object maintains control Setters and getters have conventional names
Kinds of access
Java provides four levels of access:
public: available everywhere protected: available within the package (in the same subdirectory) and to all subclasses [default]: available within the package private: only available within the class itself
The default is called package visibility In small programs this isn't important...right?
The End