240 likes | 349 Views
Inheritance. What is Inheritance?. A type of relationship between classes. There are a few different kinds of class relationships Inheritance is also called Generalization Occurs when one specific class “inherits” the characteristics and behaviors of a more general class
E N D
What is Inheritance? • A type of relationship between classes. • There are a few different kinds of class relationships • Inheritance is also called Generalization • Occurs when one specific class “inherits” the characteristics and behaviors of a more general class • It’s easier to understand with examples Wendi Jollymore, ACES
What is Inheritance? • Which of these are valid/true assertions? • All cars are vehicles • All airplanes are vehicles • All vehicles are cars • We can say that: • A car is a type of vehicle • A bike is a type of vehicle • A UFO is a type of vehicle True False Wendi Jollymore, ACES
What is Inheritance? • We often say that Inheritance is an “is a” relationship • A car is a vehicle • A bike is a vehicle • A fork is a utensil • A cat is a feline • One term is more general, the other more specific • Vehicle, Utensil, Feline are general • Car, bike, fork, cat, are specific Wendi Jollymore, ACES
What is Inheritance? • What characteristics and behaviors to all vehicles share? • Characteristics: • Colour, number of wheels, number of passengers, brand or model • Behaviors: • Start, stop, accelerate/decelerate Wendi Jollymore, ACES
What is Inheritance? • What characteristics/behaviors are different between a car and an airplane? • Airplanes can fly • Cars can reverse Wendi Jollymore, ACES
What is Inheritance • In programming, the more general class is called the parent class or super class • The more specific classes are called child classes or sub classes. In Java, a child class is only allowed one parent class… …however, a parent can have many child classes Wendi Jollymore, ACES
What is Inheritance • Examples Wendi Jollymore, ACES
What is Inheritance? • A child class contains the characteristics and behaviors of its parent • It might also have characteristics and behaviors of its own • It might also have the same behaviors as the parent, but they just work differently • Example: You can drive a car and drive a plane, but not the same way Wendi Jollymore, ACES
Example • Full time employees • work 40 hours per week • get paid an annual salary • weekly pay = annual salary / number of full weeks they work • Part time employees • can work a varying number of hours per week • weekly pay = #of hours worked * hourly rate. Wendi Jollymore, ACES
Example • Sales employees • have varying hours • weekly pay = commission amount = a percentage of their weekly sales • they also get a flat lump sum or base pay per week • Temporary sales employees • just like regular sales employees except that they don't get the base pay each week, just commissions Wendi Jollymore, ACES
Example • In a payroll program, what data would we need to know about all employees? • First name, last name, sin, employee id, address, phone number, city, province, postal code, etc. • Data used to calculate pay for employees depends on the type of employee! Wendi Jollymore, ACES
Example • Full time employees: • annual salary, weeks worked • Part time employees • hours worked, hourly rate • Sales employees • weekly sales, commission rate, base pay. • Temporary sales employees • weekly sales, commission rate. Wendi Jollymore, ACES
Example • Writing each of the 4 classes with all of the data and methods would be tedious! • We usually take the common things and put them in a parent class • Then the child classes contain all the “extras” • And modify parent methods, if needed Wendi Jollymore, ACES
Example • Employee Class: Wendi Jollymore, ACES
Example • Child Classes: Wendi Jollymore, ACES
Example • Note that SalesEmployee and TempSalesEmployee are very similar: Wendi Jollymore, ACES
Example • We could make Sales Employee a child class of Sales Employee Wendi Jollymore, ACES
Example Wendi Jollymore, ACES
One More Example • Vessels have a length characteristic and can steer(). • Sailboats and Destroyers are Vessels • both have length and can steer(). • Sailboats have sails and can raiseJib(), but not all vessels have these. • Destroyers have deckPlating and can fireGuns(), but not all vessels have these. • What would a hierarchy chart look like with the classes Vessel, Sailboat, and Destroyer? Wendi Jollymore, ACES
Possible Solution Wendi Jollymore, ACES
Exercise • For each of the following, which classes would be parent classes, which would be child classes? • Draw the hierarchy charts! • Loafer, Sneaker, Shoe, Sandal • Checking Account, Bank Account, Savings Account • Cat, Cow, Feline, Animal, Chicken, Bovine, Avian, Tiger, Yak, Parrot Wendi Jollymore, ACES
Robots and Inheritance • Look up the RobotSE class in the documentation • (class discussion) Wendi Jollymore, ACES
Creating Your Own Robot • You can use Inheritance to create your own Robot • You can give it your own methods like faceDirection() and makeBox() • How about a collectThings() method that gives the robot a certain number of coloured things? • We’ll do this in class Wendi Jollymore, ACES