33
Abstract Classes and Interfaces (?) June 21, 2017

Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Abstract Classes and Interfaces (?)

June 21, 2017

Page 2: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Reading Quiz

Page 3: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Abstract ClassesA. Abstract classes inherit from multiple parents, standard classes only inherit from one parent.

B. Abstract classes can only have one instance at a time, standard classes can have any number.

C. Abstract classes cannot be directly instantiated, standard classes can be directly instantiated

D. Abstract classes can only contain primitive properties, standard classes can have primitive and reference properties.

Page 4: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Abstract Methods

A. Abstract classes consist of only abstract methods

B. Abstract methods do not specify their implementation

C. Abstract methods are the same thing as a "static final" method

D. Abstract methods perform faster than standard methods

Page 5: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Interfaces vs. Abstract Classes

A. Interfaces always inherit from Abstract Classes

B. Abstract Classes always implement Interfaces

C. Interfaces cannot inherit from Abstract Classes

D. Abstract Classes cannot implement Interfaces

Page 6: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Whats the Result?A. "Child💔Person"

B. "Person💔Child"

C. "null💔null"

D. Won't compile

E. Runtime error

abstract class Person { public String name() { return "Person"; }}

class Child extends Person { public String name() { return "Child"; }}

Child aKindChild = new Child(); Person aMeanPerson = new Person();

System.out.println( aMeanPerson.name() + "💔" + aKindChild.name());

Page 7: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Whats the Result?A. "🐱"

B. "🐶"

C. "" (ie empty string)

D. Won't compile

E. Runtime error

interface Emojier { public String asEmoji(); }

class Dog implements Emojier { public String asEmoji() { return "🐶"; }}

class Cat implements Emojier { public String asEmoji() { return "🐱"; }}

Cat toonces = new Cat(); String anEmoji = toonces.asEmoji(); System.out.println(anEmoji);

Page 8: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Done!

Page 9: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Housekeeping

• Piazza Recap / Java environments

• Homework 2 questions

• Homework 3 incoming

Page 10: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Abstract Classes

Page 11: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Problem

• Types express a Taxonomy and data / functionality

• Some types are meant to represent data in a program

• Some types are "only" categorization

• Code should enforce this distinction

Page 12: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Animals

Mammals

Reptiles

Dogs

Whales

Snakes

Lizards

isWarmBlooded() -> true

isWarmBlooded() -> false

Page 13: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Animals

Mammals

Reptiles

Dogs

Whales

Snakes

Lizards

isWarmBlooded() -> true

isWarmBlooded() -> false

Categorization <– –> Program Logic

Page 14: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Animals

Mammals

Reptiles

Dogs

Whales

Snakes

Lizards

isWarmBlooded() -> true

isWarmBlooded() -> false

Categorization <– –> Program Logic

Abstract

Page 15: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Java Solution: Abstract Classes

• Can not be instantiated, but can be inherited

• Standard inheritance model

• Arbitrarily deep

Page 16: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Animals

Mammals

Whales

Dogs

Sad Dogs

Kujo

Old Yeller

Page 17: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Animal

Mammals

Whale

Dog

SadDog

DeadDog

JerkDog

Which are Valid?

A. new Mammal() B. new SadDog() C. new Dog() D. new JerkDog()

Page 18: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Abstract Use Cases?Abstract Concrete Subtype(s)

1 SimpsonCharacter Bart, Lisa

2 AdminUser StandardUser, AnonymousUser

3 MembersOfTheRamones JoeyRamone, TommyRamone

4 CreditCardChargeError RareCreditCardChargeError

Page 19: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Animal.java –>

Page 20: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Abstract Methods

• Taxonomy can impose "helpful" restrictions too

• Things below me must implement these methods

• Keep types clean

Page 21: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Fur.java –>

Page 22: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Interfaces

Page 23: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Problem

• Classes categorize data in a single, global way

• Multiple categorizations possible

• Redundancy, or insane hierarchies

Page 24: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

TrickyTypes.md –>

Page 25: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Entertainment

Live

Recorded

Opera Performance

Jazz Performance

Books

Photographs

Whirly Ball

Records

Page 26: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Entertainment

Live

Recorded

Opera Performance

Jazz Performance

Books

Photographs

Whirly Ball

Records

Page 27: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Entertainment

Live

Recorded

Opera Performance

Jazz Performance

Books

Photographs

Whirly Ball

Vinyl

void record(? item);

Page 28: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Java Solution

• Interfaces

• Hierarchical, but separate

• Same modifiers, same inheritance rules

Page 29: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Interfaces vs. Classes• Classes for data

• Animals

• Music Categories

• Movies

• Interfaces for Functionality

• Pet-able

• Danceable

• Recordable

Page 30: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Interfaces.java –>

Page 31: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Interfaces Specifics• Classes can implement multiple interfaces

• ArrayList implements Serializable, Iterable, Collection, List

• Small, light

• Similar to Abstract Classes

• Inheritance, default methods

Page 32: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be
Page 33: Abstract Classes and Interfaces (?) · 21-06-2017  · B. Abstract classes can only have one instance at a time, standard classes can have any number. C. Abstract classes cannot be

Taxonomizing File Types

• /etc/mime.types

• Mime is a very simple taxonomy system

• Lets implement in code!