public abstract class AbstractClass { public AbstractClass() { System.out.println("this
is an abstract class constructor!"); }
public void aMethod() { System.out.println("This
is in the method in the abstract class"); }
}
Attempting to compile and run the code will cause
Compiler error - abstract classes cannot have constructors.
Compiler error - the method AbstractClass does not have a valid return
type.
Compiler error - the class cannot be declared as abstract as it does not
have any unimplemented methods.
No compiler error - the class is practically not an abstract class and
can be instantiated.
No compiler error - the class cannot be instantiated directly. It has to
be extended to an non-abstract class. The constructors of the extended
class will call the constructor of the abstract class (implicitly or explicitly).
No compiler error - the class cannot be instantiated directly. It has to
be extended to an non-abstract class. The constructors of the abstract
class will never be called.
Question 72.
Read the following piece of code carefully.
import java.io.IOException;
public class Question72 { public Question72() throws IOException { throw new IOException(); } }
Assume that the defination of Question72E begins with the line
public class Question72E extends Question72
It is required that none of the constructors of Question72E should throw
any checked exception.
It can be achived by placing the call to the superclass with a super
keyword , which is placed in a try block with a catch block to handle the
IOException thrown by the super class.
It can be achived by avoiding explicit calls to the base class constructor.
It cannot be done in the Java Laungage with the above definition of the
base class.
Question 73.
Read the following piece of code carefully. (This is an extention to
question 72.)
public abstact class Question73 extends Question72 { public abstract void method(); }
An attempt to compile the above class definition
will cause a compiler error - non-abstract classes cannot be extended to
abstract classes.
will cause a compiler error - a constructor must be provided which may
or may not throw an IOException
will cause a compiler error - a constructor must be provided which must
throw an IOException or one of its super types.
will not cause any compiler error. The class definition is perfectly legal.
Question 74.
Read the following piece of code carefully.
class Base { Base() { System.out.println("Message
1 : In the base class constructor"); } }
abstract class Derived1 extends Base { Derived1() { System.out.println("Message
2 : In the abstract class Derived1\'s constructor"); } }
public class Derived2 extends Derived1 { public Derived2() { System.out.println("Message
3 : In the derived2 class\'s constructor."); } public static void main(String args[]) { Derived2 d2 = new Derived2(); } }
An attempt to compile and run the above code
will cause a compiler error. The non-abstract classes cannot be extended
to the abstract classes.
will cause a compiler error. The abstract classes cannot have constructors
defined.
will not cause any compiler error. The lines "Message 1..." and "Message
3 ... " are printed on the screen.
will not cause any compiler error. The lines "Message 1..." and "Message
2...." and Message 3...." are printed on the screen.
Question 75.
Read the following piece of code carefully.
public class A { A() { } }
The class A can be referenced outside the package in which it is defined.
The class A cannot be instantiated outside the package in which it is defined.
The class A cannot be extended outside the package in which it is defined.
The class A can be referenced, instantiated or extended anywhere.
The above code will cause a compiler error. The constructors of public
class have to be public.
Question 77.
If the finalize() method of an object is re-references
an object so that it becomes in-eligible for garbage collection
The compiler will throw an error.
The garbage collector "collects" the object anyway.
The garbage collector does not collect the object in the present sweep.
But when the object becomes eligible for garbage collection again, its
finalize method will not be called by the garbage collector (i.e., if the
garbage collector gets a chance to run.). It will simply be garbage collected.
The object can never be garbage collected and hence leads to memory-leak.
Each time the garbage collector calls finalize before "collecting" the
object the object "resurrects" itself.
Question 78.
If a Runtime Exception is thrown in the finalize
method -
The running application crashes.
The exception is simply ignored and the object is garbage collected.
The exception is simply ignored, but the object is not garbage collected.
The Exception causes the JVM to crash.
Question 79.
The factory class java.util.Collections
is public
implements the java.util.Collection interface.
Question 80.
import java.io.*;
public class TransientWriter implements
Externalizable { private transient
String s = "Hope I can ever be persistant!";
public void writeExternal(ObjectOutput
oOut) throws IOException {
oOut.writeObject(s); } public void readExternal(ObjectInput
oIn) throws IOException, ClassNotFoundException {
s=(String)oIn.readObject(); }
public String toString() { return s; } }
class K { public static void main(String args[]) throws IOException,
ClassNotFoundException { TransientWriter tw = new TransientWriter(); ObjectOutputStream out = new ObjectOutputStream(new
FileOutputStream("tw.out")); out.writeObject(tw);
ObjectInputStream in = new ObjectInputStream(new FileInputStream("tw.out"));