cs 2430 day 9. announcements quiz 2.1 this friday program 2 due this friday at 3pm (grace date...

24
CS 2430 Day 9

Upload: caitlin-mcdonald

Post on 21-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

CS 2430

Day 9

Page 2: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Announcements

• Quiz 2.1 this Friday

• Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Page 3: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Features of OOP

• Encapsulation

• Data hiding

• Abstraction / abstract data type

• NEW: Inheritance

Page 4: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

A new keyword: extendspublic class A{ private int x = 0;

public void doIt(int y) { x += y; }

public void print() { System.out.println(x); }}

public class B extends A{ // empty!}

public static void main(String args[]){ B b = new B();

// The method is inherited: b.doIt(10);

// x is printed out! b.print();}

Page 5: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Inheritance example

UML: Class B inherits from class A

A B

Inheritance represents an “is a” relationship

public class A

{

. . .

}

public class B extends A

{

. . .

}

Page 6: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Is-a relationship

• public class Student extends Person{ . . . }

• public class Square extends Rectangle{ . . . }

• public class Civic extends Car { . . . }

Page 7: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

An example project// Assume Class A and B exist and B a sub-class of A

public class C

{

public static void main(String args[])

{

A a = new A();

B b = new B();

a.doIt(5);

a.print();

b.doIt(10);

b.print();

}

}

Page 8: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

UML for example project

Class C uses classes A and B

Class B inherits from class A

A B

C

Page 9: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Any questions?

Page 10: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Why use inheritance?

• Basic idea: when you want to create a new class and there is already a class that includes some of the code you want

• Simply extend the existing class!

• Can reuse the fields and methods in the existing class

• Less typing!

Page 11: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Some inheritance details

Page 12: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Subclass and superclass

• A class that is derived from another class is called a subclass (a.k.a., child class)

• The class from which a class is derived is called a superclass (a.k.a., parent class)

Page 13: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Subclasses and constructors

• A subclass inherits all members of its parent

• Constructors are (technically) NOT members, so they are not inherited by subclasses

• The constructor of the superclass can (and MUST) be invoked from the subclass using super()– Must be invoked on the first line of the

constructor!

Page 14: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Any questions?

Page 15: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Inheritance example: class Person

Page 16: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

public class Person

{

private String name;

private int age; // in years

public Person(String inName, int inAge)

{

name = inName;

age = inAge;

}

public void speak()

{

System.out.print("Hello, my name is: " + name);

}

public void happyBirthday()

{

age += 1;

}

}

Page 17: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

A subclass of Person: Student

Page 18: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

public class Student extends Person

{

private float GPA; // grade point average

public Student(String inName, int inAge, float inGPA)

{

super(inName, inAge); // NECESSARY!

GPA = inGPA;

}

public void setGPA(float inGPA)

{

GPA = inGPA;

}

}

Page 19: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Subclasses can modify public and protected

methods from the superclass by overriding

them

Page 20: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

public class Student extends Person

{

private float GPA; // grade point average

public Student(String inName, int inAge, float inGPA)

{

super(inName, inAge);

GPA = inGPA;

}

public void setGPA(float inGPA)

{

GPA = inGPA;

}

@Override

public void speak()

{

System.out.println("Hello, my name is " + name

+ " and my GPA is " + GPA); // syntax error!

}

}

Page 21: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

public class Student extends Person

{

private float GPA; // grade point average

public Student(String inName, int inAge, float inGPA)

{

super(inName, inAge);

GPA = inGPA;

}

public void setGPA(float inGPA)

{

GPA = inGPA;

}

@Override

public void speak()

{

super.speak(); // can't access name directly!

System.out.println(" and my GPA is " + GPA);

}

}

Page 22: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

public class Person

{

protected String name;

protected int age; // in years

public Person(String inName, int inAge)

{

name = inName;

age = inAge;

}

public void speak()

{

System.out.print("Hello, my name is: " + name);

}

public void happyBirthday()

{

age += 1;

}

}

Page 23: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

public class Student extends Person

{

private float GPA; // grade point average

public Student(String inName, int inAge, float inGPA)

{

super(inName, inAge);

GPA = inGPA;

}

public void setGPA(float inGPA)

{

GPA = inGPA;

}

@Override

public void speak()

{

System.out.println("Hello, my name is " + name

+ " and my GPA is " + GPA); // NOT a syntax error anymore!

}

}

Page 24: CS 2430 Day 9. Announcements Quiz 2.1 this Friday Program 2 due this Friday at 3pm (grace date Sunday at 10pm)

Any questions?