1. What is an abstract class and how does it differ from a regular class?
2. Why are abstract class constructors defined as protected?
3. Class X defines method M1( ) as abstract. Class Y inherits from Class X and implements the method M1( ). Given the following code, explain why a reference to the abstract class X is allowed to refer to an object of the concrete class Y. Explain what happens when the reference to the abstract class X is used to execute method M1( ).
X obj = new Y( );
obj.M1( );
4. What are interfaces allowed to contain?
5. Define a simple interface named Motorized with one method (maxSpeed) which returns the maximum attainable speed and another method (fuelType) which returns the type of fuel required.
6. Given the interface defined in question 5, if a class named Motorcycle implements this interface, explain why the following code is legal. What happens when the interface reference vehicle invokes the maxSpeed method?
Motorized vehicle = new Motorcycle( );
System.out.print("The max speed is %d\n", vehicle.maxSpeed( ) );
7. What is an event object? Give an example.
8. What is an event source? Give an example.
9. What is an event listener? Give an example.
10. What is a nested inner class? What special privileges does a nested inner class have? Give an example of how you declare a nested inner class.
11. You are writing a simple GUI application using a class called MyGuiClass. Your GUI will have a JButton which your program will need to respond to when it is clicked. Describe what you would need to do to setup event handling using a nested inner class. Use Java code fragments in your answer.
12. If the GUI in the above example had three JButtons, how would you change your actionPerformed method to handle events from the three different buttons?
13. Here are some class definitions with questions that follow.
interface MyInterface
{
// Methods of MyInterface
}
public SomeClass implements MyInterface
{
// All methods of SomeClass and MyInterface
}
SomeClass obj = new SomeClass( );
a. MyInterface miobj = obj;
b. SomeClass obj2 = miobj;
c. miobj.aMethodOfSomeClass( );
A. Is statement a above legal, or is casting required? Explain.
B. Statement b is trying to assign the SomeClass object refered to by miobj to a SomeClass reference variable obj2. What is wrong with this statement and how would you fix it.
C. In statement c, an interface reference is trying to access a SomeClass class method that is not part of MyInterface. Is this legal? Explain.