more about java classes writing your own java classes more about constructors and creating objects

27
More about Java Classes Writing your own Java Classes More about constructors and creating objects

Upload: lindsay-daniels

Post on 18-Jan-2018

239 views

Category:

Documents


0 download

DESCRIPTION

What are Java Classes? Classes are templates They encapsulate data (variables) and behaviour (methods) Variables can either be primitive (int, char etc) or reference types (String etc)

TRANSCRIPT

Page 1: More about Java Classes Writing your own Java Classes More about constructors and creating objects

More about Java ClassesWriting your own Java ClassesMore about constructors and

creating objects

Page 2: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Java Objects We can define our own types using

the Java keyword class Your understanding and use of

Classes/objects is fundamental to getting to grips with Java

It is also the biggest climb on the learning curve - so be patient

Page 3: More about Java Classes Writing your own Java Classes More about constructors and creating objects

What are Java Classes? Classes are templates They encapsulate data (variables)

and behaviour (methods) Variables can either be primitive

(int, char etc) or reference types (String etc)

Page 4: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Classes and Objects – there is a difference

An object is an occurrence (or instance) of a Class

The Class describes the blueprint or template

An object is made from a class For an Employee class, each employee

would be an object with the data and method structure of the class

Although the structure is the same for all objects built from this class, the values held within the data can be different

Page 5: More about Java Classes Writing your own Java Classes More about constructors and creating objects

How to Create objectsfrom a class?

The new keyword is used to create an instance of a class - an object reference

Employee JonWestlake = new Employee( ); new is the ONLY way to create objects**See examplesEmployee1.java - a single class with one objectEmployee2.java - a single class with two

objectsEmployee3.java - a single class with many

objects

Page 6: More about Java Classes Writing your own Java Classes More about constructors and creating objects

What does that new statement mean?Employee JonWestlake = new Employee( );

Declares a “reference variable” of type Employee

So JonWestlake does have a memory location but no “pointer” to an object yet - essentially a null object

Page 7: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Breakdown of new statement Right hand side

= new Employee( ); Creates an object of the Employee class We could have done the statements in

two stages;

Employee JonWestlake;JonWestlake = new Employee( );

Page 8: More about Java Classes Writing your own Java Classes More about constructors and creating objects

What is an object reference? Think of a reference as a name for an

object - JonWestlake is the name of a an Employee object

Employee JonWestlake = new Employee( );

reference names can be meaningful as in this case or as we can see with the Employee application

Page 9: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Object references It is legal for two references (or more) to refer to

the same object e.g. in the Employee example we might wish to refer to the object via some initials as well

Employee JonWestlake = new Employee( );Employee jcw = JonWestlake;

jcw refers to the same Employee as JonWestlake

Page 10: More about Java Classes Writing your own Java Classes More about constructors and creating objects

What does new do? - memory

new takes the memory it needs to create an object from a special memory pool that Java controls automatically, called the heap

All class objects in Java come from the heap

Java allocates enough memory to hold the object

Java allocates memory for objects when the object is created, not at application start up

Page 11: More about Java Classes Writing your own Java Classes More about constructors and creating objects

What does new do? - constructor

Java initialises any instance variables to default values - default constructor

Java makes calls to any constructors that exist for that class

So, what is a constructor?

Page 12: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Content of Constructors Constructors are a “special” method

used to initialise an object created for a class

The name is the same as the class, so starts with a capital letter

Constructor can do anything a normal method can do**

No return type - not even void The constructor does not contain a

return statement

Page 13: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Content of Constructor Like any method a constructor can

include arguments. These arguments indicate to the constructor how to set up the initial values for the data fields of an object

See Employee2 for example

Page 14: More about Java Classes Writing your own Java Classes More about constructors and creating objects

What happens if we don’t usea Constructor?

Every class has a single default constructor with no parameters

The default constructor takes no arguments and does nothing other than initialize all object variables to their zero or null state

As soon as the developer defines a constructor then the default constructor is no longer used

Page 15: More about Java Classes Writing your own Java Classes More about constructors and creating objects

What should a Constructor do?

Creating objects to a valid starting state according to content of the constructor and arguments passed into the constructor

they are usually used to simply initialize variables within the object to some starting value

or they could be used to add objects to a linked list

or increment an object count…

Page 16: More about Java Classes Writing your own Java Classes More about constructors and creating objects

What should the Constructor do?

We advise you not to place instance style functionality within the constructor

Use the constructor to initialize an instance - keeps it simple and maintainable!

Page 17: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Overloading the Constructor A class is free to have more than one

constructor The constructors must have different

argument signatures Often one “root” constructor has all

the program logic for construction Other constructors set a few defaults

and then call the root constructor

Page 18: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Example Overloaded ConstructorItem(String itemDesc){ Item(itemDesc, 0);}

Item(String itemDesc, int itemWght){ description = itemDesc;

weight = itemWght;}

Page 19: More about Java Classes Writing your own Java Classes More about constructors and creating objects

new operator for Item class The first example of the constructor sets the

item weight to 0 and passes this information on to the full constructorItem defaultItem = new Item(“General Stock”);

Alternatively, you could call the second constructor directlyItem specifyItem = new Item(“Widgets”, 50);

Page 20: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Overloading Constructors - Tips

Place all the initialisation code in a root constructor

Root constructor is usually the constructor with the most parameters

define “convenience” constructors with fewer parameters - these constructors call the root constructor using default values for the parameters which the user has not provided

See Employee5.java example

Page 21: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Using a test to drive the choice of constructor We can ask the user something Based on the user input, we can test the

input and select the constructor appropriate to the input

See VideoEx1.java or Employee5.java

Page 22: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Invoking one Constructor from another

One constructor can invoke another constructor of the same class using the this keywordthis - a special (pseudo) variable

pseudo means the value is changed by the system not the developer

a reference to the object within which a constructor is executing

useful as it enables messages to “this” the current object to be performed - see VideoEx2.java

Page 23: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Running the Constructor Constructors do not have an

explicit keyword to mark them as such and they cannot be called like a normal method

see Employee1, Employee2 and Employee3

Page 24: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Where to position the constructor? Position the constructor either before

the main method (if there is one for the class) or after the main method

see the examples Each constructor is defined separately

i.e. not nested

Page 25: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Constructor access modifiers The access modifiers are exactly the

same as for classes - public or nothing** Modifier must be public if classes

outside of the current package need to be able to use the object being defined - design issue

if public is not used then constructor is only available within the package to which the class belongs - for our work this is usually the case

Page 26: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Destructors! There is NO destructor in Java In C++ a destructor is used to

return memory to heap of available memory

Java manages memory automatically via the constructor and automatically returns memory when objects are abandoned

Page 27: More about Java Classes Writing your own Java Classes More about constructors and creating objects

Summary We have looked further at classes

We have investigated the role of the constructor

Practical – get the examples running and write your own versions!