Tuesday 31 May 2016

Java Abstract class and interface Interview Questions

Below are the some question which are generally asked in Java interview question from Abstract class and interface.



Question-Can abstract class have constructor?

Yes,An abstract class can contain a constructor. An abstract class constructor is used to initialize fields of the abstract class. You could provide a constructor for an abstract class if you want to initialize specific fields of the abstract class before the instantiation of a child-class.We cannot create an instance of an abstract class, But we can create instances of classes those are derived from the abstract class. So, when an instance of derived class is created, the parent abstract class constructor will automatically get called.

Question-Can abstract class implements interface in                         Java? Is it necessary to implement all                                 methods?
     Yes, abstract class can implement the interface. When we implement an interface to an abstract class, its means that the abstract class inherited all the methods of the interface.
  Its depend upon the class which is implementing the interface. When we implement an interface to an abstract class, then the abstract class inherited all the methods of the interface. As, it is not important to implement all the method in abstract class however it comes to abstract class , so the abstract class can left some of the method in interface without implementation. In concrete class we need to implement all the inherited method.
Question-Can we declare abstract class as final in Java?
     No a class cannot be declare as "abstract" and "final" both. Declaring a class as "abstract" means it contains method definition and hence depends on its subclasses to provide concrete implementation.
     Making a class "final" means that no other class can extend it and hence abstract classes cannot be marked final.
     In short An abstract class must be sub-classed, whereas a final class must not be sub-classed.
      An abstract class without being inherited is of no use and hence will result in compile time error.  
Question-Can an abstract class have static methods in                Java?
     Yes, an abstract class can have static method. You cannot create an abstract static method, you can create a non abstract static method.
    Reason is you do not need a object instance to access a static method because that method can be called directly, even if you do not have an instance of the abstract class.(to invoke static method you do not need to build a class instance (i.e object))
Question-is it possible to create a instance of abstract                class in java?
     No, its never possible to instantiate an abstract class. But might be interviewer can say “YES WE CAN” at that time as below,
    abstract class myClass {

        public void  m1()

        {
           System.out.print(“Inside Abstract class");
        }
     }
    class  implmentmyClass {         public static void main(String a[]) {         myClass m = new myClass () {};
            m.m1();        }
    }
  The given code block in last page instantiates an anonymous inner class which is a subclass of the myClass abstract class. It is not same as instantiating the abstract class itself. we can use new keyword to create an anonymous class instance by just adding {} as implement body at the end of the abstract class. so its not the abstract class instantiation its anonymous class.
Question- Is it necessary for abstract class to have                       abstract method?
  No, we can have an abstract class without Abstract Methods as both are independent. Declaring a class abstract means that it can not be instantiated on its own and can only be sub classed. Declaring a method abstract means that Method will be defined in the subclass. So you can easily define an abstract class without any abstract method.
Question- Can we define main method in abstract class? 
     Yes, we can define main method inside the abstract class, Loading a class is not the same as creating an instance/object of the class(using new operator). And there's no need to create an instance of the class to call main(), because it's static method. So there's no problem if we will define the main method inside an abstract class.
Question- Can you use abstract and final both with a                   method.
     No, we can not declare abstract method as final. We have to provide implementation to abstract methods in subclasses, and if we will mark it as final then we can’t provide the method reimplementation for that final method in it’s derived classes.
     final abstract int add(int n1,int n2);
   Here we can’t provide the implementation for the add method as it is declared as final. But at the same time you declare it as abstract. Here we can’t provide the implementation for the add method. Even we described to provide implementation but we cant.
Question- Can you declare an interface method as static ?
    NO, interface only contains abstract method.
    Suppose we have a Test class with a static        method add. we can call this as
    Test.add(2, 3);
     If Test were an interface instead of a class, it could not have any defined functions. As such, calling something like Test.add(2, 3) doesn't make any sense.
Question- Can we declare an Interface be final ?
     No. We can not instantiate interfaces, so in order to make interfaces useful we must create subclasses. When the final keyword appears in a class declaration, it means that the class may never be subclassed or overridden. Interface represent behaviour, rather than implementation, therefore it makes no sense for it to be final.
Question- Can we define private and protected modifiers             for variables in interfaces.
    No we cant define the variable with private, protected in interface. only public, static & final are permitted with variable inside an interface. An interface provide a way for the client to interact with the object. If variables will not be public, the clients would not have access to them. that is why variable are public.
Question-Can we use “abstract” keyword with                              constructor?
     No, we cant declare the constructor as abstract because abstract means we must have to override it in non abstract child class and you can not override a constructor. Constructors are not inherited thus we cannot override them.
Question-Can we declare abstract methods as private?

     No. Abstract methods can not be private. we cant inherit the private method, so its doesn't make a sense to declare a private method abstract. Declaring a abstract method means we need to override and implement it in child/subclass, but we cant override private methods so we cant make it  abstract. You can declare it protected instead of private. 
Question-We can’t instantiate an abstract class. Then                  why constructors are allowed in abstract                      class?
    The use of constructor to initialize the instance of classes. We use a constructor to create new object often with parameter specifying the initial value or other important information about the object. Suppose inside a class we have some fields we always want them to initialize, to do this we create a constructor and initialize them. If we have two different subclasses of abstract class when we instantiate them their constructor will get called and then parent constructor will get called and field will get initialized. Every constructor invokes the constructor of its super class with an implicit call to super. 
Question-Abstract classes can be nested. True or false?
    True, Abstract classes can be nested. A abstract nested classes are the inner classes marked with abstract modifier. Inner class acts as a member of the enclosing class and can have any access modifiers: abstract, final, public, protected, private, static. For more details please dig the Inner Class in java. 
Question-Can we declare abstract methods as                              synchronized?
    Yes we can declare the abstract method as synchronized but it would be useless to do so since synchronization is an aspect of the implementation, not the declaration, and abstract methods do not have an implementation. You can use the 'synchronized' modifier on a concrete implementation of an abstract method, which is where it belongs. 
Question-Can abstract method declaration include                       throws clause?
Yes. We can define an abstract class with throws clause.
Question-What are the valid and invalid keywords or                     modifier with abstract class?
Valid - public,  protected and default.
Invalid - static,  final and private. 



Sunday 22 May 2016

Abstract Class vs Interface in Java

This is very frequent question asked in Interview.Today we will try to understand the Abstract class and Interface in Java.

Abstract Class vs Interface in Java
Abstract Class:-


  • A class that is preceded with keyword “abstract” is known as abstract class.
  • It extended by other class and its method implemented.
  • It can’t be instantiated means we cant create the object of abstract class.
  • it may or may not include abstract methods.
  • An abstract method is a method that is declared without an implementation (without braces, and followed by a semicolon), as below,
          abstract returnType methodName(argument1 a, argument2 b);


  • If a class contain abstract methods, then the class itself must be declared abstract.
  • When an abstract class is subclassed, the subclass usually provides implementations for all of the abstract methods in its parent class. However, if it does not, then the subclass must also be declared abstract.
  • abstract class may contain non-final and final variables. 
     abstract classes can be use in below situation,
                1-If need to share code among closely related classes.
               2-classes that extend your abstract class have many common methods or fields,                       or require access modifiers other than public.
               3-declare non-static or non-final fields. It enables us to define methods that can                        access and modify the state of the object to which they belong. 

Interface :-
  • An interface is basically a contract -- it doesn't have any implementation. 
  • An interface can contain only method declaration; it cannot contain method definition.
  • In interface all fields are automatically public, static, and final and all methods (as default methods) are public.
  • The class that implements the interface should implement all the members of an interface. Like abstract classes, an interface cannot be instantiated.
  • interface is used to "implements“ whereas abstract class is used to "extends".
  • interface can be used to achieve multiple inheritance.

  • interface is more flexible than abstract class because one class can only "extends" one super class, but "implements" multiple interfaces.


  • interface can be use in below situation,
         1-we expect that unrelated classes will implement interface(the interfaces Comparable             and Cloneable are implemented by many unrelated classes)
           2-Need to specify the behaviour of a particular data type, but not concerned about who             implements its behaviour.
           3-Need to take advantage of multiple inheritance.

    Find Duplicate Characters In String using Java

    package com.zia.test; import java.util.HashMap; import java.util.Map; import java.util.Set; public class findDuplicateCharacter { /**...