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

Java OO Revisited

Embed Size (px)

DESCRIPTION

 

Citation preview

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) ); // ?