Presentation is loading. Please wait.

Presentation is loading. Please wait.

LECTURE 7: INHERITANCE CSC 212 – Data Structures.

Similar presentations


Presentation on theme: "LECTURE 7: INHERITANCE CSC 212 – Data Structures."— Presentation transcript:

1 LECTURE 7: INHERITANCE CSC 212 – Data Structures

2 Sharing Among Classes  Classes often share actions & data  Writing code once is laziest option  Cutting-and-pasting still requires effort  Increase bugs with multiple copies of code  Two ways to not rewrite code Composition & Inheritance

3 Composition  Used when there is “has-a” relationship  Student has a name  FullName has a firstName  Car has an engine  Rectangle has a upperRightVertex  Use a field to compose classes  So name would be field in Student class  firstName would be field in FullName class…  Use getters & setters to access field’s data

4 Composition Example public class FullName { private String firstName; private String lastName; // constructor, getters & setters also here } public class Student { private FullName name; // Brevity is the soul of wit- Shakespeare public String getFirstName() { return name.getFirstName(); } public void setFirstName(String newName) { name.setFirstName(newName); }

5 Inheritance  “Is-a” relationships implemented via inheritance  Automobile is a Vehicle  Car is an Automobile  Truck is an Automobile  Car is a Vehicle  Starts with superclass which subclass extends  Automobile extends Vehicle  Car extends Automobile  Truck extends Automobile  Car extends Vehicle

6 extends Keyword  Java example of inheritence public class Vehicle {…} public class Wagon extends Vehicle {…} public class Automobile extends Vehicle {…} public class Truck extends Automobile {…} VehicleAutomobileTruckWagon

7 extends Keyword  Each class extends exactly one class  extends explicitly specifies the superclass  Otherwise, defaults to subclass of Object  Can be extended by multiple classes  Vehicle superclass of Automobile & Wagon  Automobile superclass of Truck  So, Vehicle also superclass of Truck VehicleAutomobileTruckWagon

8 Subclass-Superclass  Every class is subclass of:  superclass,  superclass’s superclass  superclass’s superclass’s superclass  superclass’s superclass’s superclass superclass, …  Object  Truck is-a Automobile which is-a Vehicle  So Truck is-a Vehicle also  Superclass variables CAN refer to subclass instances  But subclass CANNOT refer to superclass instances

9 What Gets Inherited And How?  Inherit all fields & methods from superclass  Subclass can use them unless they are private  Inheritance is automatic – DON’T RETYPE IN SUBCLASS  Redeclaring field or method leads to bad things

10 Inheritance Example public class SuperClass { protected String str = “PARENT”; public String getMyString() { return “SUPER”; } } public class SubClass extends SuperClass { public String getFullString() { String s = getMyString(); return “sub” + s; } public SubClass() { str = “kid”; } public static void main(String[] args) { SubClass sub = new SubClass(); SuperClass super = new SuperClass(); System.out.println(sub.getMyString()); System.out.println(super.getMyString()); System.out.println(sub.getFullString()); System.out.println(sub.str); System.out.println(super.str); super = sub;

11 Chaining Constructors  Often want to reuse superclass’s constructor  Already initializes fields in superclass  Unfortunately, constructors not inherited  Maximize laziness: refuse to lose (the constructor)  May also want multiple constructors in class  Often do similar work initializing fields  Still want to avoid copying code  Increase laziness through chaining

12 Chains Explained  Constructors chained by this() or super()  Must be first command in constructor  Call into same class using this()  super() calls superclass constructor  Executes just like a normal method call  Must match types listed for the parameters  Call cannot violate access protection (e.g., private )  Constructors are not inherited  Still need to write constructors  Copying code limited by doing this, however

13 Stickers public class Sticker { protected String text; public Sticker(String words) { text = words; } public void printMe() { System.out.println(text); } } public class CSticker extends Sticker { private String color; public CSticker(String clr, String type) { text = type; color = clr; } public static void main(String[] args) { Sticker s = new Sticker(“boo”); CSticker cs = new CSticker(“hoo”); s.printMe(); cs.printMe(); } }

14 Stickers public class Sticker { protected String text; public Sticker(String words) { text = words; } public void printMe() { System.out.println(text); } } public class CSticker extends Sticker { private String color; public CSticker(String clr, String type) { text = type; color = clr; } public CSticker(String typ) { this(“black”, typ); } public static void main(String[] args) { Sticker s = new Sticker(“boo”); CSticker cs = new CSticker(“hoo”); s.printMe(); cs.printMe(); } }

15 Stickers public class Sticker { private String text; public Sticker(String words) { text = words; } public void printMe() { System.out.println(text); } } public class CSticker extends Sticker { private String color; public CSticker(String clr, String type) { text = type; color = clr; } public CSticker(String typ) { this(“black”, typ); } public static void main(String[] args) { Sticker s = new Sticker(“boo”); CSticker cs = new CSticker(“hoo”); s.printMe(); cs.printMe(); } }

16 Stickers public class Sticker { private String text; public Sticker(String words) { text = words; } public void printMe() { System.out.println(text); } } public class CSticker extends Sticker { private String color; public CSticker(String clr, String type) { super(type); color = clr; } public CSticker(String typ) { this(“black”, typ); } public static void main(String[] args) { Sticker s = new Sticker(“boo”); CSticker cs = new CSticker(“hoo”); s.printMe(); cs.printMe(); } }

17 Overriding Methods  Subclass can reuse method names from superclass  Overloaded when different signature used  When signatures identical its overridden  Subclass can modify exiting methods in this way  Changed only for subclass and any of its subclasses  Original used by superclass & other classes  Method definition used determined by instance’s type

18 Overriding Methods  Can call overriden method as defined in superclass  Only in subclass overriding the method  Call using super.methodName  super.super.methodName illegal (only 1 super legal)  Overriden method cannot become less accessible  Can make more accessible, however

19 Overriding Example public class SuperClass { public String getMyString() {return “SUPER”;} public SuperClass() { } } public class SubClass extends SuperClass { public String getMyString() {return “sub”;} public SubClass() { } public static void main(String[] args) { SubClass sub = new SubClass(); SuperClass super = sub; System.out.println(sub.getMyString()); System.out.println(super.getMyString()); super = new SuperClass(); System.out.println(super.getMyString());

20 For Next Lecture  Project #1 has been released  Week #3 available on Web/Angel  Do not let it wait, stop procrastinating  Class moving into new material  Java review is now over; get help if you need more  I have a cool office with a full candy jar  Come by & ask questions while getting sugar fix


Download ppt "LECTURE 7: INHERITANCE CSC 212 – Data Structures."

Similar presentations


Ads by Google