1 / 9

Announcements & Review

Lab 8 Due Thursday Image and color effects with 2D arrays Read: Chapter 9 Cahoon & Davidson Chapter 9 Regis & Stepp Additional Reading: http://java.sun.com/docs/books/tutorial/java/concepts/inheritance.html. Last Time Objects - attributes & behaviors Classification - Inheritance Today

tsokol
Télécharger la présentation

Announcements & Review

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lab 8 Due Thursday Image and color effects with 2D arrays Read: Chapter 9 Cahoon & Davidson Chapter 9 Regis & Stepp Additional Reading: http://java.sun.com/docs/books/tutorial/java/concepts/inheritance.html Last Time Objects - attributes & behaviors Classification - Inheritance Today Review Inheritance Abstract Classes Announcements & Review Lecture 27: Abstract Classes & Inheritance

  2. 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. 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 InheritanceExample: 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 myColor = Color.white; } */ 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. 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. Abstract Classes • 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() { return name; } } Lecture 27: Abstract Classes & Inheritance

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

More Related