abstract class
- cannot construct by itself
- abstract method to force the children to implement it.
- new class can only extend once.
- more reasonable to say BMW extends Car()
interface
- Everything is public
- Java 8: default method == abstract class method
- new class can implents different interfaces
- LinkedList implements List and Queue