Top Banner
Object Orientated Programming with Java Jussi Pohjolainen Tampere University of Applied Sciences
21

Java OO Revisited

Nov 11, 2014

Download

Technology

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Java OO Revisited

Object  Orientated  Programming  with  Java  

Jussi  Pohjolainen  Tampere  University  of  Applied  Sciences  

Page 2: Java OO Revisited

Object  Orientated  Concepts  

•  Class  •  Object  •  Inheritance  •  Constructors  •  Abstract  class  •  Interface  •  Polymorphism  

Page 3: Java OO Revisited

Class  class Student {

private String name;

public Student(String name) {

this.name = name;

}

public void setName(String name) {

this.name = name

}

public void getName() {

return name;

}

}

Page 4: Java OO Revisited

CreaAng  objects  

Student jack = new Student(“Jack”);

Student bill = new Student(“Bill”);

System.out.println( jack.getName() );

System.out.println( bill.getName() );

Page 5: Java OO Revisited

Reference?  

Student jack = new Student(“Jack”);

Student bill = jack;

jack.setName(“Lisa”);

// What is the output?

System.out.println(bill.getName());

Page 6: Java OO Revisited

Reference  

•  In  Java,  every  object  is  passed  by  reference  •  If  you  want  to  clone  a  object,  you  use  special  techniques  (later  on  the  material)  

Page 7: Java OO Revisited

Inheritance  

class Person {

private String name;

...

}

class Student extends Person {

private int id;

...

}

Page 8: Java OO Revisited

Constructors  class Person {

private String name;

public Person() {

System.out.println(“Person”);

}

}

class Student extends Person {

private int id;

public Student() {

System.out.println(“Student”);

}

}

// What is the output?

Student s = new Student();

Page 9: Java OO Revisited

Default  Constructor  

•  If  programmer  does  not  define  a  constructor,  Java  creates  a  default  constructor:  class Person {

}

=>

class Person {

public Person() {

super();

}

}

Page 10: Java OO Revisited

Default  Constructor  

class Person {

private String name;

public Person() {

System.out.println(“Person”);

}

}

class Student extends Person {

private int id;

}

// What is the output?

Student s = new Student();

Page 11: Java OO Revisited

Default  Constructor  Problem  

class Person {

private String name;

public Person(String name) {

System.out.println(“Person”);

}

}

class Student extends Person {

private int id;

}

// What is the output?

Student s = new Student();

Page 12: Java OO Revisited

Abstract  Class  

•  You  cannot  create  a  object  from  abstract  class  •  Abstract  class  may  contain  abstract  method  

•  Abstract  method  is  a  method  declaraAon  which  must  be  implemented  in  inherited  classes  

Page 13: Java OO Revisited

Abstract  Class  

abstract class Graphic {

abstract double calculateSurfaceArea();

}

class Circle extends Graphic {

private int radius;

double calculateSurfaceArea() {

...

}

}

Page 14: Java OO Revisited

Abstract  Class  

abstract class A {

abstract void m();

}

abstract class B extends A {

// What is the implementation of the class B?

}

Page 15: Java OO Revisited

Interface  

•  Interface  is  a  abstract  class  that  contain  only  abstract  methods  

•  Interface  can  contain  also  public  staAc  final  variables  

•  Class  can  inherit  only  one  class,  but  it  can  implement  many  interfaces  

Page 16: Java OO Revisited

Interface  

interface class A {

public void m();

}

class B implements A {

public void m() {

...

}

}

Page 17: Java OO Revisited

Polymorphism  

•  Declaring  a  object:  –  Graphic c;!

•  IniAalizing  the  object:  –  c = new Graphic();!

•  This  is  also  possible:  –  c = new Circle();!–  c = new Rect();!

•  If  Circle and  Rect are  inherited  from  Graphic!

Page 18: Java OO Revisited

Polymorphism  

class Polymorphism {

public static void main(String [] args) {

// What are the possible objects to be passed?

method(??)

}

public static void method(Graphic c) {

...

}

}

Page 19: Java OO Revisited

Polymorphism  

interface R {

...

}

class Polymorphism {

public static void main(String [] args) {

// What are the possible objects to be passed?

method(??)

}

public static void method(R r) {

...

}

}

Page 20: Java OO Revisited

Cloning  

class Person implements Cloneable {

private name;

public Person(String name) {

this.name = name;

}

public Object clone() {

return new Person(this.name);

}

}

Person a = new Person(“jack”);

Person b = a.clone();

Page 21: Java OO Revisited

Equals  

// What happens here?

Student jack1 = new Student(“Jack”);

Student jack2 = new Student(“Jack”);

System.out.println( jack1 == jack2 ); // true or false?

System.out.println( jack1.equals(jack2) ); // ?