Q1. What is the difference between an Abstract class and Interface?
1. Abstract classes may have some executable methods and methods left
unimplemented. Interfaces contain no implementation code.
2. An class can implement any number of interfaces, but subclass at most one abstract class.
3. An abstract class can have nonabstract methods. All methods of an interface are
abstract.
4. An abstract class can have instance variables. An interface cannot.
5. An abstract class can define constructor. An interface cannot.
6. An abstract class can have any visibility: public, protected, private or none
(package). An interface's visibility must be public or none (package).
7. An abstract class inherits from Object and includes methods such as clone() and
equals().

Q2.What are checked and unchecked exceptions?
Java defines two kinds of exceptions :
Checked exceptions : Exceptions that inherit from the Exception class are
checked exceptions. Client code has to handle the checked exceptions thrown by
the API, either in a catch clause or by forwarding it outward with the throws clause.
Examples - SQLException, IOxception.
Unchecked exceptions : RuntimeException also extends from Exception. However,
all of the exceptions that inherit from RuntimeException get special treatment.
There is no requirement for the client code to deal with them, and hence they are
called unchecked exceptions. Example Unchecked exceptions are
NullPointerException, OutOfMemoryError, DivideByZeroException typically,
programming errors.

Q3.What is a user defined exception?
User-defined exceptions may be implemented by
• defining a class to respond to the exception and
• embedding a throw statement in the try block where the exception can occur or
declaring that the method throws the exception (to another method where it is
handled).
The developer can define a new exception by deriving it from the Exception class as follows:
public class MyException extends Exception {
/* class definition of constructors (but NOT the exception handling code) goes here public MyException() {
super();
}
public MyException( String errorMessage ) {
super( errorMessage );
}
}
The throw statement is used to signal the occurance of the exception within a try block. Often, exceptions are instantiated in the same statement in which they are thrown using the
syntax.
throw new MyException("I threw my own exception.")
To handle the exception within the method where it is thrown, a catch statement that handles MyException, must follow the try block. If the developer does not want to handle the exception in the method itself, the method must pass the exception using the syntax:
public myMethodName() throws MyException

Q4.What is the difference between C++ & Java?
Well as Bjarne Stroustrup says "..despite the syntactic similarities, C++ and Java are very different languages. In many ways, Java seems closer to Smalltalk than to C++..". Here are few I discovered:
• Java is multithreaded
• Java has no pointers
• Java has automatic memory management (garbage collection)
• Java is platform independent (Stroustrup may differ by saying "Java is a platform"
• Java has built-in support for comment documentation
• Java has no operator overloading
• Java doesn’t provide multiple inheritance
• There are no destructors in Java