1. OOP concept
    Q: what is OOP?
    A: OOP stands for Objects Oriented programming. It is a methodology to design a program using classes and objects. It simplifies the softeare development and maintenance by providing some concepts like Inheritance, Polymorphism, Abstraction, Encapsulation.

    Q: What is class and object?
    A: class is like the model, a kind, it is a set of objects with same attributes and methods. So, object is a more concrete concept.

    Q: What is Inheritance?
    A: Inheritance is a mechanism. When a new class is created, we can use extends to let it inherit all the properties and methods from another exisiting class. The class derived from another class is called subclass, and the class from which subclass derived is called super class. A class can have only one superclass but a superclass can have more than one subclass.

    Q: what is Encapsulation?
    A: Encapsulation in Java is a mechanism of wrapping the viables and methods together as a single unit. In encapsulation, the viables of a class will be hidden from other classes and can be accessed by public getter and setter methods.

    Q: what is Polymorphism?
    A: Polymorphism is the ability of an object to take on many forms. The most common use of polymorphism in OOP occurs when a parent class reference is used to refer to a child class object.

    Q: what is abstract class?
    A: An abstract class in Java is a superclass but cannnot be instantiated. It is used to state or define general characteristics. It can define what attributes and methods this class has, but not to assign the value to attributes ang for the methods, they only have the method name but no actual method body.

    Q: what is Overloading?
    A: For overloading, it means we can use one identifier to define multiple methods, that is, we have a couple of methods with same method name but with different parameters. We use Overloading to deal with similar task but with slightly different set of perameters.

    Q: what is Override?
    A: For a subclass, when it inheirt a the method from its superclass and rewrite the method body for this subclass’s specific use, it is override.

    Q: what is Interfaces
    A: Interfaces is a reference type in Java, it is a collection of abstract methods. When a class implements an interface, it inherited the abstract methods of the interface. A class can implements as many interfaces as it needed.

    Q: what is packages?
    A: Package is used to prevent name conflicts and control access.

    Q: Java Virtual Machine
    A: JVM is an abstraction layer between a Java application and the underlying platform. When we code java, we have .jave file and complier can compile it to bytecodes, JVM has the interpreter to tell the physical machine to do the job. And this is why Java is cross-platform.