Java Second Oop

62
8/16/2019 Java Second Oop http://slidepdf.com/reader/full/java-second-oop 1/62 Zahid Aslam Classes and Objects

Transcript of Java Second Oop

Page 1: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 1/62

Zahid Aslam

Classes and Objects

Page 2: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 2/62

Zahid Aslam

Overview

Implementing classes and objects in Java.

Understand important features in Java classes.

Visibility Control

Static Metods and !ttributes

"arameter "assing

Object #elegation

Object Cleanup

Page 3: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 3/62

Zahid Aslam

Classes ! class is a collection of felds $data or attributes% and methods 

$procedure or function% tat operate on tat data.

centre&centre'radius

area$%circumference$%

Circle

Page 4: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 4/62

Zahid Aslam

#e(ning a Class

 )e basic synta* for a class de(nition+class  ClassName [extends SuperClassName]

{

  [fields declaration]

  [methods declaration]  }

,are bone class +

// Circle.java

// Circle class definition

class Circle {

}

Page 5: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 5/62

Zahid Aslam

!dding -ields+ Class Circle wit(elds

!dd felds 

// Circle.java

class Circle {

  double centreX, centreY; //centre coordinate

  double radius; //radius

}

 )e (elds $data% are also called te instance variables.

Page 6: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 6/62

Zahid Aslam

!dding Metods ! class wit only data (elds are not useful. Objects created by

suc a class cannot respond to any messages.

Metods are declared inside te body of te class butimmediately after te declaration of data (elds.

 )e general form of a metod declaration is+

t!e method"ame #!arameter$list%

{

method$bod;}

Page 7: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 7/62Zahid Aslam

Circle Class /*ample

// Circle.java

class Circle {

  double centreX, centreY;

double radius;

//&ethods to return circumference and area  double circumference#% {

 double circum ' ()*.+)radius;

return circum;

  }

  double area#% {

double area ' *.+ ) radius ) radius;

  return area;

}

}

Metod ,ody

Page 8: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 8/62Zahid Aslam

Compiling te class

Create a (le Circle.java and enter te code for te classsown in te previous e*ample $0ote+ te (le namesould matc te class name%.

Compiling te class +javac Circle.java

Creates (le Circle.class 

Circle becomes a derived data t!e that can be

used in a java !ro-ram.

Page 9: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 9/62Zahid Aslam

#ata !bstraction #eclaring te Circle class1 as created a new data type Circle 2

#ata !bstraction

Variables of te data type can be now de(ned in a program.

// Circleest.java// est !ro-ram to test the Circle class

class Circleest {

  !ublic static void main# trin- ar-s[] % {

  Circle aCircle;  Circle bCircle;

}

}

Page 10: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 10/62Zahid Aslam

Class of Circle cont.  )e de(nitions+ Circle aCircle3 Circle bCircle3 in te above

e*ample did not create Circle objects.

aCircle1 bCircle are simply references to a Circle object1 not anobject itself.

aCircle

"oints to noting

$0ull 4eference%

 bCircle

"oints to noting

 $0ull 4eference%

null null

Page 11: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 11/62Zahid Aslam

Creating objects of a class Objects are created dynamically using te new 5eyword.

aCircle and bCircle refer to Circle objects

bCircle ' ne0 Circle#%;aCircle ' ne0 Circle#%;

Page 12: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 12/62Zahid Aslam

Creating objects of a class

// Circleest.java

// est !ro-ram to test the Circle class

class Circleest {

  !ublic static void main# trin- ar-s[]%{

 Circle aCircle;

 Circle bCircle;

 aCircle ' ne0 Circle#%;

 bCircle ' ne0 Circle#%;

}

}

Page 13: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 13/62Zahid Aslam

Creating objects of a class

aCircle ' ne0 Circle#%;bCircle ' ne0 Circle#% ;

bCircle ' aCircle;

"

aCircle

6

bCircle

,efore !ssignment

"

aCircle

6

bCircle

,efore !ssignment

Page 14: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 14/62Zahid Aslam

!utomatic garbage collection  )e object does not ave a reference and cannot be

used in future.

 )e object becomes a candidate for automatic garbagecollection.

 Java automatically collects garbage periodically and releaseste memory used to be used in te future.

6

Page 15: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 15/62Zahid Aslam

!ccessing Variables andMetods

Similar to C synta* for accessing data de(ned in a structure.

Circle aCircle ' ne0 Circle#%;

// initiali1e centre and radius

aCircle.centreX ' (.2;

aCircle.centreY ' (.2;

aCircle.radius ' +.2;

ObjectName.VariableName

ObjectName.MethodName(parameter-list)

i d i

Page 16: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 16/62Zahid Aslam

/*ecuting Metods inObject7Circle

Using Object Metods+

Circle aCircle ' ne0 Circle#%;

double area;

area ' aCircle.area#%;

sent 8message9 to aCircle

Page 17: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 17/62Zahid Aslam

Using Circle Class /*ample

// Circleest.javaclass Circleest {

  !ublic static void main#trin- ar-s[]%{

  Circle aCircle;

aCircle ' ne0 Circle#%;

aCircle.centreX ' +2;aCircle.centreY ' (2;

  aCircle.radius ' 3;

  double area ' aCircle.area#%;

double circumf ' aCircle.circumference#%;

  stem.out.!rintln#  45adius'46aCircle.radius64 7rea'46area%;

  stem.out.!rintln#45adius'46

  aCircle.radius64Circumference '46circumf%;

  }

}

Page 18: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 18/62Zahid Aslam

Using Circle Class /*ample "rogram Output +

5adius'3.2 7rea'89.3

5adius'3.2 Circumference '*+.2222222222222(

Page 19: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 19/62Zahid Aslam

,etter way of Initialising or!ccess #ata Members *1 y1 r

Information :iding is important;

!void giving direct access to attributes.

#e(ne !ccess metods. an interface for te rest of te system to use.

 )o initialise7Update a value+

aCircle.setX# +2 %  )o read a value+

aCircle.-etX#%

 )ese metods are informally called as !ccessors orSetters7<etters Metods.

0ote + Java te*t boo5 uses a di=erent convention from wat isused in tese notes. <et metod in te te*t boo5 ise>uivalent to set metod in tese e*amples.

Page 20: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 20/62

Zahid Aslam

!ccessors 2 ?<etters7Setters@

// Circle.java

class Circle {

  double centreX, centreY, radius;

  //&ethods to set and -et fields

  double -etX#% { return centreX;}  double -etY#% { return centreY;}

  double -et5#% { return radius;}

  void setX#double x:in% { centreX ' x:in;}

  void setY#double :in% { centreY ' :in;}

  void set5#double r:in% { radius ' r:in;}

  // ther methods -o here

}

U i t7 t t d

Page 21: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 21/62

Zahid Aslam

Using get7set metods /*ample

// Circleest.java

class Circleest {

  !ublic static void main#trin- ar-s[]%{

  Circle aCircle;

aCircle ' ne0 Circle#%;

aCircle.setX#+2%;aCircle.setY#(2%;

  aCircle.set5#3%;

  double area ' aCircle.area#%;

double circumf ' aCircle.circumference#%;

  stem.out.!rintln#  45adius'46aCircle.-et5#%64 7rea'46area%;

  stem.out.!rintln#45adius'46

  aCircle.-et5#%64Circumference '46circumf%;

  }

}

Page 22: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 22/62

Zahid Aslam

Object InitialiAation

Ben objects are created1 te initial value of data (elds isun5nown unless its users e*plicitly do so.

In te previous e*amples te initial values were set afterobject creation using synta*+

Object0ame.#ata-ield D E3Object0ame.Set#ata-ield$E%3

In many cases1 it would be useful if tis initialisation can

be carried out by default witout te users e*plicitlyinitialiAing tem.

In Java1 tis can be acieved troug a mecanism calledconstructors.

Page 23: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 23/62

Zahid Aslam

Bat is a ConstructorF

Constructor is a special metod tat is invo5ed?automatically@ at te time of object creation.

Constructor is normally used for initialiAing objects witdefault values unless di=erent values are supplied.

Constructor as te same name as te class name.

Constructor cannot return values.

! class can ave more tan one constructor as long astey ave di=erent input arguments Overloading

 )ere is 0O e*plicit invocation statement needed+ Bente object creation statement $new% is e*ecuted1 teconstructor metod will be e*ecuted automatically.

Page 24: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 24/62

Zahid Aslam

#e(ning a Constructor

!ublic class Class"ame {

  // <ata =ields>

  // Constructor

  ClassName() {

  // Method Body Statements

}

  //&ethods to mani!ulate data fields

}

!ddi C t t t Ci l

Page 25: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 25/62

Zahid Aslam

!dding a Constructor to Circleclass+ /*ample

  // Circle.java

  class Circle {

  double centreX, centreY, radius;

  Circle#% {

  centreX ' 2;

  centreY ' 2;

  radius ' +2.2;

  }

  //&ethods to set and -et fields

  // ther methods -o here

}

!ddi M lti l " t

Page 26: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 26/62

Zahid Aslam

!dding a Multiple"arametersConstructor to our Circle Class

class Circle {

 double centreX, centreY, radius;

  // Constructor

  Circle#double x, double , double r%

{

 centreX ' x;

 centreY ' ;

 radius ' r; }

  //&ethods to set and -et fields

// ther methods -o here

 

}

Page 27: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 27/62

Zahid Aslam

Constructors initialise Objects 4ecall te following OG# Code Segment+

Circle aCircle ' ne0 Circle#%;

aCircle.x ' +2.2;

aCircle. ' (2.2aCircle.r ' 3.2;

aCircle = new Circle() 3

!t creation time te center and radius

are not de(ned.

 )ese values are e*plicitly set later.

Page 28: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 28/62

Zahid Aslam

Constructors initialise Objects Bit de(ned constructor

Circle aCircle ' ne0 Circle#+2.2, (2.2, 3.2%;

aCircle ' ne0 Circle#+2.2, (2.2, 3.2%;

aCircle is created wit center $E1 HE%and radius

Page 29: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 29/62

Zahid Aslam

Constructor )est /*ample

// CircleConstructorest.javaclass CircleConstructorest {

  !ublic static void main#trin- ar-s[]%{

  Circle aCircle ' ne0 Circle#+2.2, (2.2, 3.2%; 

stem.out.!rintln#?CentreX'?6aCircle.-etX#%%;  stem.out.!rintln#?CentreY'?6aCircle.-etY#%%;

  stem.out.!rintln#45adius'46aCircle.-et5#%%;

  }

}

"rogram Output @ CentreX'+2.2

CentreY'(2.2

5adius'3.2

Page 30: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 30/62

Zahid Aslam

Multiple Constructors

Sometimes want to initialiAe in a number of di=erent ways1depending on circumstance.

 )is can be supported by aving multiple constructorsaving di=erent input arguments.

Page 31: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 31/62

Zahid Aslam

Multiple Constructors

class Circle {

  double centreX, centreY, radius;

// Constructor

 Circle#double x, double , double r%{

centreX ' x; centreY ' ; radius ' r;

}

  Circle#double r%{

centreX ' 2.2; centreY ' 2.2; radius '

r;

  }

  Circle#double x, double %{centreX ' x; centreY ' ; radius '

+2.2;

  }

  //&ethods to set and -et fields

// ther methods -o here

Page 32: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 32/62

Zahid Aslam

InitialiAing wit constructors!ublic class estCircles {

!ublic static void main#trin- ar-s[]%{

Circle circle7 ' ne0 Circle#+2.2, +(.2, (2.2%;

Circle circleA ' ne0 Circle#+2.2%;

Circle circleC ' ne0 Circle#3.2,+2.2%;

  }}

circle! D new Circle$E1 H1 HE%circle, D new Circle$E%

Centre D $E1E%4adiusDE

circleC D new Circle$1E%

Centre D $1E%

4adius D E

Centre D $E1H%

4adius D HE

Page 33: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 33/62

Zahid Aslam

Metod Overloading Constructors all ave te same name. Metods are distinguised by teir signature+

name number of arguments type of arguments position of arguments

 )at means1 a class can also ave multiple metods wit tesame name + metod overloading. )is is a form of  polymorpism.

0ot to confuse wit method overriding $coming up%.

Page 34: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 34/62

Zahid Aslam

"olymorpism !llows a single method or operator  associated wit di=erent

meaning depending on te type of data passed to it. It can berealised troug+ Metod Overloading

#e(ning te same method wit di=erent argument types$metod overloading% polymorpism.

 )e metod body can ave di=erent logic depending on tedate type of arguments.

Page 35: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 35/62

Zahid Aslam

 )e 0ew this 5eyword

class Circle {

 double centreX, centreY, radius;  // Constructor

 Circle #double centreX, double centreY, B  double radius% {

  this.centreX ' centreX;

  this.centreY ' centreY;  this.radius ' radius;

}

  // ther methods

  }

 this 5eyword can be used to refer to te object itself. It isgenerally used for accessing class members $from its ownmetods% wen tey ave te same name as tose passedas arguments.

Visibility Control+ #ata :iding and

Page 36: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 36/62

Zahid Aslam

Visibility Control+ #ata :iding and/ncapsulation

 Java provides control over te visibility  of variables andmetods.

 )is allows encapsulation, wic is safely sealing data witin

te capsule of te class.

"revents programmers from relying on details of classimplementation1 so you can update witout worry.

:elps in protecting against accidental or wrong usage.

eeps code elegant and clean $easier to maintain%.

Page 37: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 37/62

Zahid Aslam

Visibility

area

Circle

circumference

Center $*1y%4adius r

message

Construction time message

message

Circle

Visibility Modi(ers+ "ublic

Page 38: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 38/62

Zahid Aslam

Visibility Modi(ers+ "ublic1"rivate1 "rotected

Public 5eyword applied to a class1 ma5es it available7visible

everywere. !pplied to a metod or variable1 completelyvisible.

#efault $0o visibility modi(er is speci(ed%+ it beaves li5epublic in its pac5age and private in oter pac5ages.

Private (elds or metods for a class only visible witin tatclass. "rivate members are not  visible witin subclasses1 andare not  inerited.

Protected members of a class are visible witin te class1subclasses and also witin all classes tat are in te samepac5age as tat class. )ey are also visible to subclasses inoter pac5ages.

Page 39: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 39/62

Zahid Aslam

Visibility

!ublic class Circle {  !rivate double centreX, centreY, radius;

  // Constructor

!ublic Circle #double x, double , double r%

{

this.x ' x;this. ' ;

this.r ' r;

}

 

!ublic double circumference#%{return ()*.+)r;

  }

  !ublic double area#% {

return *.+ ) r ) r;

}

}

centre&centre'radius

Karea$%

Kcircumferenc

Circle

Page 40: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 40/62

Zahid Aslam

!ccessors 2 ?<etters7Setters@

!ublic class Circle {  !rivate double x,,r;

  //&ethods to return circumference and area

  !ublic double -etX#% { return x;}

  !ublic double -etY#% { return ;}  !ublic double -et5#% { return r;}

  !ublic void setX#double x% { this.x ' x;}

  !ublic void serY#double % { this. ' ;}

  !ublic void set5#double r% { this.r ' r;}

  }

More on ?Visibility@ during Ineritance and "ac5age #iscussion

Page 41: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 41/62

Zahid Aslam

Static Members

 Java supports de(nition of global metods and attributes tatare common to all objects of te type of class. Suc membersare called Static members.

!n attribute or a metod can be de(ned to be static.

 )is feature is useful wen we want to create a variablecommon to all instances $objects% of a class.

One of te most common e*amples of a static attribute is onetat 5eeps count of te number of objects of te class tatave been created.

0ote+ Java creates only one copy for a static variable wic

can be used even if te class is never instantiated.

Page 42: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 42/62

Zahid Aslam

Static Variables /*ample

// Cricle.java

class Circle {

  // static #class % variable

// ne for the Circle class, number of circles  static int numCircles ' 2;

  double centreX, centreY, radius;

// Constructors and other methods

  Circle#double x, double , double r%{

  centreX ' x; centreY ' ; radius ' r;

  numCircles66;

}

}

Us ng Stat c Var a es

Page 43: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 43/62

Zahid Aslam

Us ng Stat c Var a es /*ample

// CountCircles.javaclass CountCircles {

!ublic static void main#trin- ar-s[]%{

  Circle circle7 ' ne0 Circle# +2, +(, (2%;

B // numCircles ' +

  stem.out.!rintln#?"umber of Circles ' 6

Circle.numCircles %;

  Circle circleA ' ne0 Circle# 3, *, +2%;

// numCircles ' (

  stem.out.!rintln#?"umber of Circles ' 6

Circle.numCircles %;

}

Page 44: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 44/62

Zahid Aslam

Static Variables /*ample

circle! D new Circle$E1 H1 HE% circle, D new Circle$1 L1 E%

numCircl

es

"umber of Circles ' +

"umber of Circles ' (

 "rogram output@

Page 45: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 45/62

Zahid Aslam

Instance Vs Static Variables

Instance variables + One copy per object.  /very objectas its own instance variable.

/.g. centre&1 centre'1 radius $centre and radius inte circle%

Static variables + One copy per class. /.g. numCircles $total number of circle objects created%

Page 46: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 46/62

Zahid Aslam

Static Metods ! class can ave metods tat are de(ned as static $e.g.1 main

metod%.

Static metods can be accessed witout using objects. !lso1tere is 0O need to create objects.

 )ey are pre(*ed wit 5eyword ?static@

Static metods are generally used to group related libraryfunctions tat don9t depend on data members of its class. -ore*ample1 Mat library functions.

Page 47: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 47/62

Zahid Aslam

Static metods restrictions Static metods can only call oter static metods.

Static metods can only access static data.

Static metods cannot refer to ?tis@ or ?super@ $more later% inanyway.

Page 48: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 48/62

Zahid Aslam

Static Metods /*ample

// Circle.javaclass Circle {

  // static #class % variable

// ne for the Circle class, number of circles

  !rivate static int numCircles ' 2;

  !rivate double centreX, centreY, radius;

// Constructors and other methods

  !ublic Circle#double x, double , double r%{

  centreX ' x; centreY ' ; radius ' r;

  numCircles66;}

!ublic static void !rint"umCircles#%{

 

stem.out.!rintln#?"umCircles'?6numCircles%;

}

}

Using Static Metods

Page 49: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 49/62

Zahid Aslam

Using Static Metods /*ample

// CountCircles.java

class CountCircles {

!ublic static void main#trin- ar-s[]%{

  Circle circle7 ' ne0 Circle# +2, +(, (2%;

Circle circleA ' ne0 Circle# 3, *, +2%;

Circle.!rint"umCircles#%;

}

}"rogram Output+"umCircles'(

, 5 t : ll B ld

Page 50: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 50/62

Zahid Aslam

,ac5 to :elloBorldSystem invo5es static main

metodN  // DelloEorld.java@ Dello Eorld !ro-ram

class DelloEorld

{

  !ublic static void main#trin- ar-s[]%

  {

  stem.out.!rintln#?Dello Eorld%;

}

}

,ac5 to Constants

Page 51: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 51/62

Zahid Aslam

,ac5 to Constants(nal can also be made as staticN

// Fuared"umbers.java

class Fuared"umbers{

  static final int &7X:"G&AH5 ' (3;

  !ublic static void main#trin- ar-s[]%{

  final int &7X:"G&AH5 ' (3;  int lo ' +;

  int sFuared ' 2;

  0hile #sFuared I' &7X:"G&AH5%{

  sFuared ' lo ) lo;

stem.out.!rintln#sFuared%;  lo ' lo 6 +;

}

}

}

Page 52: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 52/62

Zahid Aslam

-inal ! java variable can be declared using te 5eyword (nal. )en

te (nal variable can be assigned only once. ! variable tat is declared as (nal and not initialiAed is called a

blan5 (nal variable. ! blan5 (nal variable forces teconstructors to initialise it.

 Java classes declared as (nal cannot be e*tended. 4estricting

ineritance; Metods declared as (nal cannot be overridden. In metods

private is e>ual to (nal1 but in variables it is not.

(nal parameters 2 values of te parameters cannot becanged after initialiAation. #o a small java e*ercise to (nd outte implications of (nal parameters in metod overriding.

 Java local classes can only reference local variables andparameters tat are declared as (nal.

! visible advantage of declaring a java variable as static (nal

is1 te compiled java class results in faster performance.

Page 53: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 53/62

Zahid Aslam

"arameter passing

Metod parameters wic are objects are passed byreference.

Copy of te reference to te object is passed into metod1original value uncanged.

Page 54: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 54/62

Zahid Aslam

"arameter passing /*ample

// 5eferenceest.java!ublic class 5eferenceest {

!ublic static void main #trin-[] ar-s%

{

Circle c+ ' ne0 Circle#3, 3, (2%;

Circle c( ' ne0 Circle#+, +, +2%;

stem.out.!rintln#?c+ 5adius ' ?

6c+.-et5#%%;

stem.out.!rintln#?c( 5adius ' ?

6c(.-et5#%%;

!arameterester#c+, c(%;

  stem.out.!rintln#?c+ 5adius ' ? 6c+.-et5#%%;

  stem.out.!rintln#?c( 5adius ' ? 6c(.-et5#%%;

 }

  ........ cont

i l

Page 55: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 55/62

Zahid Aslam

"arameter passing /*ample

!ublic static void !arameterester#Circlecircle7,

Circle circleA%

{

circle7.set5#+3%;

circleA ' ne0 Circle#2, 2, +22%;  stem.out.!rintln#?circle7 5adius'? 6

  circle7.-et5#%%;

  stem.out.!rintln#?circleA5adius'? 6

circleA.-et5#%%;}

}

i l

Page 56: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 56/62

Zahid Aslam

"arameter passing /*ample "rogram Output +

c+ 5adius ' (2.2

c( 5adius ' +2.2

circle7 5adius ' +3.2circleA 5adius ' +22.2

c+ 5adius ' +3.2

c( 5adius ' +2.2

" i / l

Page 57: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 57/62

Zahid Aslam

"arameter passing /*ampleSTEP1 – Before calling

parameterTester()

c

$11HE%

cH

$.1E%

&

circle!

&circle,

&

circle!

STEP2 – parameterTester(c1, c2)

c

$11HE%

cH

$.1E%circle!

circle,

circle!

STEP3 –circlA.setRadis(1!)

c

$11%

cH

$.1E%circle! circle,circle!

STEP" – circlB # ne$%irlce(&,&,1&&)c

$11%

cH

$.1E%circle! circle,circle!

$E.E1EE%

" t i / l

Page 58: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 58/62

Zahid Aslam

"arameter passing /*ample

STEP! – After Retrning from parameterTester

c

$11%

cH

$.1E%

&

circle!

&

circle,

&

circle!

# l ti 7! i ti

Page 59: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 59/62

Zahid Aslam

#elegation7!ssociation

!bility for a class to delegate its responsibilities to anoterclass.

! way of ma5ing an object invo5e services of oter objectstroug containersip.

# l ti / l

Page 60: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 60/62

Zahid Aslam

#elegation /*ample

"oint

*Coord

yCoord

get&Coord$%get'Coord$%

class Joint {

  !rivate double xCoord;

  !rivate double Coord;

  // Constructor

  >>>>.

  !ublic double -etXCoord#%{

return xCoord;

  }

  !ublic double -etYCoord#%{return Coord;

  }

}

# l ti / l

Page 61: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 61/62

Zahid Aslam

#elegation /*ample

"oint

*CoordyCoord

get&Coord$%get'Coord$%

!ublic class Circle {

  !rivate Joint centre;

 

!ublic double -etX#%{

  return centre.-etXCoord#%;

  }  !ublic double -etY#%{

  return centre.-etYCoord#%;

  }

} Circle

centre

getCentre&$%getCentre'$%

Obj t Cl 7# t t

Page 62: Java Second Oop

8/16/2019 Java Second Oop

http://slidepdf.com/reader/full/java-second-oop 62/62

Objects Cleanup7#estructor Unli5e C and CKK1 memory deallocation is automatic in java1

don9t worry about it. no dangling pointers and no memory lea5 problem.

 Java allows you to de(ne a fnalize metod1 wic is invoked $ifde(ned% just before te object destruction.

!llows recordmaintenance operations or cleaning up of anyspecial allocations made by te user.

// done 0ith this circle

!rotected void finali1e#% thro0s BHxce!tion {

  Circle.numCircles ' Circle.numCircles$$

stem.out.!rintln#?number of circles@6

Circle.num:circles%;

}