Constructor initializes an object when it is created and has the same name as its class. Constructors can be simple, parameterized, or copy constructors. Constructors don't return values as they don't have a return type. Static methods can be called directly on a class without creating an instance. The main method is static so it can be called by the JVM before object creation. Java doesn't support multiple inheritance but interfaces provide an alternative. Abstract classes can contain abstract and non-abstract methods while interfaces can only have abstract methods.