@startuml

abstract class AbstractList
abstract AbstractCollection
interface List
interface Collection

List <|-- AbstractList
Collection <|-- AbstractCollection

Collection <|- List
AbstractCollection <|- AbstractList
AbstractList <|-- ArrayList

class ArrayList {
Object[] elementData
size()
}

enum TimeUnit {
DAYS
HOURS
MINUTES
}

class Person {
    Int AGE
    String firstName
    String lastName
    setName(String first, String last)
}

Person <|-- Student
class Student {
    Float GPA
}

@enduml