1 / 39

COMP 110: Introduction to Programming

COMP 110: Introduction to Programming. Tyler Johnson Apr 8, 2009 MWF 11:00AM-12:15PM Sitterson 014. Announcements. Lab 8 is due tomorrow by midnight. Questions?. Today in COMP 110. Go over Program 4 More Inheritance Programming Demo. Program 4. Inheritance. Section 8.3 in text.

rogersjulia
Télécharger la présentation

COMP 110: Introduction to Programming

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. COMP 110:Introduction to Programming Tyler Johnson Apr 8, 2009 MWF 11:00AM-12:15PM Sitterson 014

  2. Announcements • Lab 8 is due tomorrow by midnight

  3. Questions?

  4. Today in COMP 110 • Go over Program 4 • More Inheritance • Programming Demo

  5. Program 4

  6. Inheritance • Section 8.3 in text

  7. Inheritance • Define a general class • Later, define specialized classes based on the general class • These specialized classes inherit properties from the general class

  8. Inheritance Hierarchies • Put these classes into an inheritance hierarchy Crocodile Human Reptile Animal Mammal Whale Animal Reptile Mammal Crocodile Human Whale

  9. The is-a relationship • This inheritance relationship is known as an is-a relationship • A Doctoral student is a Grad student • A Grad student is a Student • A Student is a Person • Is a Person a Student? • Not necessarily!

  10. When to Use Inheritance • Use inheritance when an is-a relationship is present • A Student is a Person, Student inherits from Person • Do not confuse an is-a relationship with a has-a relationship • A Student has a date of enrollment, so an object of class Date should be an instance variable of the Student class, and should not inherit from it

  11. The Keyword extends public classDerived_Class_NameextendsBase_Class_Name { Declaration_of_Added_Instance_Variables Definitions_of_Added_And_Overridden_Methods } public class Student extends Person { // stuff goes here } • A derived (child) class inherits the public instance variables and public methods of its base (parent) class

  12. public class Person { // ... public void printInfo() { System.out.println("Name: " + name); } } public class Student extends Person { // ... public void printInfo() { System.out.println("Name: " + getName()); System.out.println("ID: " + getID()); } } Method Overriding Overridden • The printInfo method in the class Student overrides the printInfo method inherited from the class Person

  13. Overriding Methods • Java handles this situation as follows: • If a derived class defines a method with the same name, number and types of parameters, and return type as a method in the base class, the derived class’ method overrides the base class’ method • The method definition in the derived class is the one that is used for objects of the derived class

  14. Overriding Methods • Why is it useful? • You often want derived classes to perform custom behavior public class Circle extends Shape { public void draw(Graphics g) { g.drawOval(…arguments…); } } public class Shape { public void draw(Graphics g) { } } public class Rectangle extends Shape { public void draw(Graphics g) { g.drawRect(…arguments…); } }

  15. The Keyword super • Last time we saw that the keyword super could be used to invoke the constructor of the base class public class Student extends Person { private int id; public Student() { super(); id = -1; } } public class Person { private String name; public Person() { name = "No name yet"; } } Student student = new Student(); //name is set to No name yet, and id is set to -1

  16. The Keyword super • The use of super must always be the first action taken in the constructor • Not required to be specified, but if it is, it must come first • Java will automatically call the default constructor of the base class if super is not specified Equivalent public Student() { super(); id = -1; } public Student() { id = -1; } public Student() { id = -1; super(); } OK OK ERROR

  17. The Keyword super • You cannot use repeated supers • If specified, specify only once public Student() { super(); super("No name yet"); id = -1; } public Student() { super(); id = -1; } OK ERROR

  18. The Keyword super • What if the base class is a derived class? public class Student extends Person { private int id; public Student() { super(); id = -1; } } public class Person { private String name; public Person() { name = "No name yet"; } } public class Undergraduate extends Student { privateint level; public Undergraduate() { super(); //calls constructor of Student, not Person level = -1; } }

  19. public class Person { // ... public void printInfo() { System.out.println("Name: " + name); } } public class Student extends Person { // ... public void printInfo() { System.out.println("Name: " + getName()); System.out.println("ID: " + getID()); } } Method Overriding Overridden • Is there a way to call the printInfo() method of the class Person from within the class Student? • Yes

  20. Calling Overridden Methods public class Person { // ... public void printInfo() { System.out.println("Name: " + name); } } public class Student extends Person { // ... public void printInfo() { super.printInfo(); System.out.println("ID: " + getID()); } } • The keyword super can also be used to call overridden methods of a base class

  21. Inheritance and Overloading public class Person { private String name; public void setData(String newName) { name = newName; } } public class Student extends Person { private int id; public void setData(String newName, int newID) { setData(newName); id = newID; } Overloaded • Methods with a different number or type of parameters are overloaded, not overridden

  22. Type Compatibilities Given this inheritance heirarchy… Person Athlete HighJumper ExtremeAthlete Skydiver XGamesSkater

  23. Is This Code Legal? Person p = new Person(); Yes! Person Athlete HighJumper ExtremeAthlete Skydiver XGamesSkater

  24. Is This Code Legal? HighJumper h = new HighJumper(); Yes! Person Athlete HighJumper ExtremeAthlete Skydiver XGamesSkater

  25. Is This Code Legal? Person p = new Athlete(); Yes! An Athlete is a Person, so this is okay Person Athlete HighJumper ExtremeAthlete Skydiver XGamesSkater

  26. Is This Code Legal? Person p = new SkyDiver(); Yes! A SkyDiver is a Person, so this is okay Person Athlete HighJumper ExtremeAthlete Skydiver XGamesSkater

  27. Is This Code Legal? Skydiver s = new Person(); No! A Person is not necessarily a Skydiver, so this is illegal Person Athlete HighJumper ExtremeAthlete Skydiver XGamesSkater

  28. Is This Code Legal? Athlete ath = new Athlete();XGamesSkater xgs = ath; No! An Athlete is not necessarily an XGamesSkater, so this is illegal Person Athlete HighJumper ExtremeAthlete Skydiver XGamesSkater

  29. Dynamic Binding Person person = new Person("John Smith"); person.printlnfo(); //calls printInfo of Person class Student student = new Student("John Smith", 42352352); student.printlnfo(); //calls printInfo of Student class Person p = new Student(“Tom Jones", 733234242); p.printInfo(); //which printInfo method is called? The printInfo method of the Student class is called because p is really a student!

  30. The Operator instanceof • We can test whether an object is of a certain class type using the instanceof operator: public void objectType(Person p) { if(p instanceof Student) { System.out.println("p is an instance of the class Student"); } else if(p instanceof GradStudent) { System.out.println("p is an instance of the class GradStudent"); } … } • Syntax: objectinstanceofClass_Name

  31. The Class Object • Every class in Java is derived from the class Object • Every class in Java is an Object Object Person Animal Student Employee Reptile Mammal Crocodile Human Whale

  32. The Class Object • The Java class Object provides methods that are inherited by every class • For example • equals, toString • These methods should be overridden with methods appropriate for the classes you create

  33. Printing Objects to Screen • The method println is overloaded to accept objects as an argument • System.out.println(int i) • System.out.println(double d) • System.out.println(Object o) • When printing an object with System.out.println(Object o), the object’s toString() method is called and the result is printed public void println(Object o) { System.out.println(o.toString()); //dynamic binding }

  34. Overriding toString public class Person { private String name; public Person() { name = "No name yet"; } public void setName(String newName) { name = newName; } //converts a Person object to a String, overrides toString in the class Object public String toString() { return"Name: " + name + "\n"; } public static void main(String[] args) { Person person = new Person(); person.setName("John Smith"); System.out.println(person); //prints "Name: John Smith" to screen (without quotes) } }

  35. Overriding toString public class Student extends Person { privateint id; public Student() { super(); id = -1; } public void setID(String newName) { name = newName; } //converts a Person object to a String, overrides toString in the class Person public String toString() { return"Name: " + name + "\nID: " + id + "\n"; } public static void main(String[] args) { Student student = new Student(); student.setName("John Smith"); student.setID(342652342); System.out.println(student); //prints "Name: John Smith" // "ID: 342652342" to screen (without quotes) } }

  36. Programming Demo • Programming with inheritance • Sports • Define the following classes Person Athlete HighJumper ExtremeAthlete Skydiver XGamesSkater

  37. Sports • Each class has a method called jump • Simply prints a message to screen • Person • System.out.println("Whee!"); • Athlete • System.out.println("I jump well!"); • ExtremeAthlete • System.out.println("EXTREMEEEEEEEEEE JUMP!"); • HighJumper • System.out.println("I jump REALLY HIGH!"); • ShotPutter • System.out.println("I don't jump very much."); • XGamesSkater • System.out.println("360 nollie to frontside air");

  38. Sports • Write a class called Sports that demonstrates • Type compatibility • Dynamic binding • instanceof operator

  39. Friday • No recitation, enjoy the Holidays

More Related