Presentation is loading. Please wait.

Presentation is loading. Please wait.

Announcements & Review

Similar presentations


Presentation on theme: "Announcements & Review"— Presentation transcript:

1 Announcements & Review
Lab 8 Due Thursday Image and color effects with 2D arrays Read: Chapter 9 Cahoon & Davidson Chapter 9 Regis & Stepp Additional Reading: Last Time Objects - attributes & behaviors Classification - Inheritance Today Review Inheritance Abstract Classes Lecture 27: Abstract Classes & Inheritance

2 Lecture 27: Abstract Classes & Inheritance
Why Inheritance? Reuse of common functionality in related classes Reducing redundancy eases programmer effort Classification lets humans deal with complexity, inheritance is a form of classification General to specific, e.g., cat to siamese Lecture 27: Abstract Classes & Inheritance

3 Lecture 27: Abstract Classes & Inheritance
Inheritance in Java ... All classes inherit from Object Rectangle inherits from Object ColoredRectangle inherits from Rectangle Object provides these methods: toString() equals() // more on these clone() // later... instanceof() Object Transformation Graph Rectangle ColoredRectangle Lecture 27: Abstract Classes & Inheritance

4 Super class: Rectangle
public class Rectangle { protected int width; // the instance variables protected int height; public Rectangle() { width = 0; height = 0; } public Rectangle(int w, int h) { width = w; height = h; } public void draw(...) {} Lecture 27: Abstract Classes & Inheritance

5 Syntax of Inheritance Example: ColoredRectangle
public class ColoredRectangle extends Rectangle { private Color myColor; // additional instance variables public ColoredRectangle() { super(); // optional myColor = Color.white; } /* Is the same as: public ColoredRectangle() { implicitly first calls super, because the signatures match } */ public ColoredRectangle(int w, int h, Color newColor) { super(w,h); // required: why do we need this one? myColor = newColor; Lecture 27: Abstract Classes & Inheritance

6 Lecture 27: Abstract Classes & Inheritance
Dynamic Dispatch Declare variables of supertype and they can be the supertype or the subtype Rectangle r = new ColoredRectangle(); Declare variables of a subtype and they can only be of type subtype or lower. Test type with instanceof <variable instanceof TypeName> returns a boolean if (r instanceof Rectangle) {...} if (r instanceof ColoredRectangle) {...} BlueJ Lecture 27: Abstract Classes & Inheritance

7 Lecture 27: Abstract Classes & Inheritance
How can we partially declare a class? Example: Shape class with subtypes Rectangle and Triangle Is there a default draw method? Is there a default toString? Lecture 27: Abstract Classes & Inheritance

8 Syntax for Abstract Classes
public abstract class Shapes { protected static String name; // Rectangle, Triangle, ... public abstract String toString(); // must implement toString public String getName() { return name; } public class Rectangle extends Shapes { protected static String name = “Rectangle”; .... public String toString() { Lecture 27: Abstract Classes & Inheritance

9 Lecture 27: Abstract Classes & Inheritance
BlueJ examples ... Lecture 27: Abstract Classes & Inheritance


Download ppt "Announcements & Review"

Similar presentations


Ads by Google