Review Lesson 6 of Beginning Java. Summary: Extending Classes and Inheritance Classes can inherit data and methods from already-defined classes. This is called inheritance. Access attributes affect which data and methods are inherited, as does package membership. All Java classes are subclasses of Object. You can cast any object to the type of one of its superclasses. Abstract classes are an organizational tool; they cannot be instantiated or run. Using the final modifier prevents a method from being overridden by a subclass and prevents a class from being subclassed at all. Java does not allow multiple inheritance. Classes may have one, and only one, superclass. Java does have interfaces, though, which allow you to simulate multiple inheritance even though no actual code is inherited. Polymorphism is an important OO programming concept. It means that the type of a class might not be determined until runtime - for example, any method that accepts a parameter of type Shape will also accept a parameter of type Circle. It won't know until runtime that it's dealing with a Circle, though. Your Shape class contains a base point for each shape. Your subclasses must be defined relative to this base point as follows: Line: Base point is the start point. Add another point as the endpoint. Circle: Base point is the center. Add a variable to represent radius. Rectangle: Base point is the upper-left point. Add a variable to represent the lower-right corner. Assume all rectangles have sides parallel to screen edges. If you follow these guidelines, your code will be compatible with the sample code. Extra Credit: Answer the following question: What is the significance of the picture that appears opposite the first page of every chapter?