1.What are the principal
concepts of OOPS?
There
are four principle concepts upon which object oriented design and programming
rest. They are:
●
Abstraction
● Polymorphism
● Inheritance
● Encapsulation
(i.e. easily remembered as A-PIE).
2.What is Abstraction?
Abstraction
refers to the act of representing essential features without including the
background details or explanations.
3.What is Encapsulation?
Encapsulation
is a technique used for hiding the properties and behaviors of an object and
allowing outside access only as appropriate. It prevents other objects from
directly altering or accessing the properties or methods of the encapsulated
object.
4.What is the difference between abstraction and encapsulation?
● Abstraction focuses on the outside view of an
object (i.e. the interface) Encapsulation
(information hiding) prevents clients from seeing it’s inside view, where the
behavior of the abstraction is implemented.
● Abstraction solves the problem in the design side
while Encapsulation is the
Implementation.
● Encapsulation is the deliverables of Abstraction.
Encapsulation barely talks about grouping up your abstraction to suit the
developer needs.
5.What is Inheritance?
● Inheritance is the process by which
objects of one class acquire the properties of objects of another class.
● A class that is inherited is called a
superclass.
● The class that does the inheriting is
called a subclass.
● Inheritance is done by using the keyword
extends.
● The two most common reasons to use
inheritance are:
○
To
promote code reuse
○
To use
polymorphism
6.What is Polymorphism?
Polymorphism
is briefly described as "one interface, many implementations."
Polymorphism is a characteristic of being able to assign a different meaning or
usage to something in different contexts - specifically, to allow an entity
such as a variable, a function, or an object to have more than one form.
7.How does Java implement polymorphism?
(Inheritance,
Overloading and Overriding are used to achieve Polymorphism in java).
Polymorphism manifests itself in Java in the form of multiple methods having the same name.
Polymorphism manifests itself in Java in the form of multiple methods having the same name.
● In some cases, multiple methods have the
same name, but different formal argument lists (overloaded methods).
● In other cases, multiple methods have the same name, same return type, and same formal argument list (overridden methods).
8.What is method overloading?
Method
Overloading means to have two or more methods with same name in the same class
with different arguments. The benefit of method overloading is that it allows
you to implement methods that support the same semantic operation but differ by
argument number or type.
Note:
Note:
● Overloaded
methods MUST change the argument list
● Overloaded
methods CAN change the return type
● Overloaded
methods CAN change the access modifier
● Overloaded
methods CAN declare new or broader checked exceptions
● A
method can be overloaded in the same class or in a subclass
9.What is method overriding?
Method
overriding occurs when sub class declares a method that has the same type
arguments as a method declared by one of its superclass. The key benefit of
overriding is the ability to define behavior that’s specific to a particular
subclass type.
Note:
Note:
● The
overriding method cannot have a more restrictive access modifier than the
method being overridden (Ex: You can’t override a method marked public and make
it protected).
● You
cannot override a method marked final
● You
cannot override a method marked static
10.What are the differences between method overloading and method overriding?
Overloaded Method
|
Overridden Method
|
|
Arguments
|
Must change
|
Must not change
|
Return type
|
Can change
|
Can’t change except for covariant returns
|
Exceptions
|
Can change
|
Can reduce or eliminate. Must not throw new or broader checked
exceptions
|
Access
|
Can change
|
Must not make more restrictive (can be less restrictive)
|
Invocation
|
Reference type determines which overloaded version is
selected. Happens at compile time.
|
Object type determines which method is selected. Happens at
runtime.
|
11.What is an abstract
class?
Abstract
classes are classes that contain one or more abstract methods. An abstract
method is a method that is declared, but contains no implementation.
Note:
Note:
● If even
a single method is abstract, the whole class must be declared abstract.
● Abstract
classes may not be instantiated, and require subclasses to provide implementations
for the abstract methods.
● You
can’t mark a class as both abstract and final.
12.Can we instantiate an abstract class?
An
abstract class can never be instantiated. Its sole purpose is to be extended
(subclassed).
13.What are the differences between Interface and Abstract class?
Abstract Class
|
Interfaces
|
An abstract
class can provide complete, default code and/or just the details that have to
be overridden.
|
An interface
cannot provide any code at all,just the signature.
|
In case of
abstract class, a class may extend only one abstract class.
|
A Class may
implement several interfaces.
|
An abstract
class can have non-abstract methods.
|
All methods
of an Interface are abstract.
|
An abstract
class can have instance variables.
|
An Interface
cannot have instance variables.
|
An abstract
class can have any visibility: public, private, protected.
|
An Interface
visibility must be public (or) none.
|
If we add a
new method to an abstract class then we have the option of providing default
implementation and therefore all the existing code might work properly.
|
If we add a
new method to an Interface then we have to track down all the implementations
of the interface and define implementation for the new method.
|
An abstract
class can contain constructors .
|
An Interface
cannot contain constructors .
|
Abstract
classes are fast.
|
Interfaces
are slow as it requires extra indirection to find corresponding method in the
actual class.
|
14.When should I use abstract classes and when should I use interfaces?
Use Interfaces when…
● You see that something in your design
will change frequently.
● If various implementations only share
method signatures then it is better to use Interfaces.i
Nếu giá tri thực thi chỉ chia sẻ cho 1
phương thức thì tốt nhất nên sd interface
● you need some classes to use some
methods which you don't want to be included in the class, then you go for the
interface, which makes it easy to just implement and make use of the methods
defined in the interface.
Use Abstract Class when…
● If various implementations are of the
same kind and use common behavior or status then abstract class is better to
use.
● When you want to provide a generalized
form of abstraction and leave the implementation task with the inheriting
subclass.
● Abstract classes are an excellent way to
create planned inheritance hierarchies. They're also a good choice for nonleaf
classes in class hierarchies.
15.What is Constructor?
● A constructor is a special method whose
task is to initialize the object of its class.
● It is special because its name is the same as the class name.
● They do not have return types, not even void and therefore they cannot return
values.
● They cannot be inherited, though a derived class can call the base class
constructor.
● Constructor is invoked whenever an
object of its associated class is created.




Không có nhận xét nào:
Đăng nhận xét