Presentation is loading. Please wait.

Presentation is loading. Please wait.

LECTURE 9: INTERFACES & ABSTRACT CLASSES CSC 212 – Data Structures.

Similar presentations


Presentation on theme: "LECTURE 9: INTERFACES & ABSTRACT CLASSES CSC 212 – Data Structures."— Presentation transcript:

1 LECTURE 9: INTERFACES & ABSTRACT CLASSES CSC 212 – Data Structures

2 Inheritance Issues  Multiple inheritance causes many problems  What if field declared in multiple superclasses?  Which constructor will super() chain to?  Java avoid by requiring classes extend exactly 1 class  Often mix multiple ideas within a class public class Student { … } public class Employee { … } public class StudentEmployee extends

3 abstract  Can declare methods as abstract  Methods cannot be defined; promise functionality  Methods can have parameters, throw exceptions, etc. public abstract void foo(int i); public abstract Beer bar(String o);  Undefined abstract methods make class abstract  Cannot instantiate any abstract class  Can have fields & normal methods also allowed  Subclasses can override abstract methods  Subclass abstract if not overriding all abstract methods

4 Interfaces in Real World

5 Interfaces  Declare important constant fields  public static final must be used for fields  Declare public abstract methods  Methods callable anywhere by any class  But method’s body cannot be defined in interface  Classes implement interfaces  Implementing classes define interface’s methods  Avoids problem of multiple inheritance  No problem implementing more than 1 interface  Unrelated to superclass choice for a class

6 Adding to an Interface  Interfaces have sub-interfaces  Sub-interface extends super-interface  Super-interface’s methods inherited by sub-interface  Inherits methods from super-super-interface, too  Sub-interface can extend multiple interfaces  Methods are not defined so this is legal  Similar to how classes implement multiple interfaces  Must implement all interface’s methods  Includes methods inherited from super-interface  Also requires implementing interface’s methods

7 Declaring Interfaces public interface Drawable { public void setColor(Color c); public Color getColor(); public void draw(Graphics g); } public interface TranDraw extends Drawable{ public void setTransparency(int tLevel); } public interface MoveDraw extends Drawable{ public void setPosition(int x, int y); }

8 Implementing Interfaces public class Square implements Drawable { private Color c; private int x, y, side; public Square(Color col, int len) { c = col; side = len; } public void setColor(Color col){ c=col; } public Color getColor() { return c; } public void draw(Graphics g) { g.drawRect(x, y, side, side, c); } }

9 Using Interfaces  Cannot instantiate an interface…  Can only ever create instances of a class  …but can have variables of interface type  Instance of classes implementing interface referenced  Methods must be implemented by classes public void drawRed(Drawable d, Graphics g) { d.setColor(Color.red); d.draw(g); }

10 Interface vs. Abstract Class  Concepts serve similar purposes  Cannot instantiate either of these types  Both used for variable, field, & parameter types  Can extend classes only  Only classes have fields & method bodies  Use abstract class when…  Classes need method or private field in common  … in all other cases use an interface

11 Typecasting Shape poly = new Square(); Square s = poly; Square s = ((Square)poly);  Directs Java to compile illegal code  Errors occur at runtime instead  This code compiles, but still illegal int i = 9; Square s = ((Square)i);

12 Narrowing Conversions  Java cannot compile narrowing conversions  Assigns superclass/interface to lower variable  Compiler will not allow it, but could be legal  Typecasting required for these assignments Object obj = new String(“bye”); String sad = obj; //  Does not work String glad = (String)obj; // works!

13 Before Next Lecture…  Finish work on week #3 homework  Continue working on program assignment #1  Readings for Wed. on Angel/web’s schedule page  I will be posting code, but there will not be slides…  Discuss how to write GUI programs  Learning Java’s Swing classes


Download ppt "LECTURE 9: INTERFACES & ABSTRACT CLASSES CSC 212 – Data Structures."

Similar presentations


Ads by Google