OOP: object-oriented programming. it is a paradigm that represents concepts as "objects" that have data fields and methods.
Object: it is an instance of the class.
Class: user-defined data types.
new operator: use to create an object of a class and associated the object with a variable that names it.
//Syntax
ClassName objectName = new ClassName();
File names: a file must be named the same as the class it contains with an added .java at the end. eg. a class named MyClass must in a file named MyClass.java.
Three characters in OOP
Encapsulation: means that the data and the actions are combined into a class object, and the details of the implementation are hidden. capsule.
Inheritance: means that a general class is defined and compiled. then, more specialized versions of that class may be defined by starting with the already defined class and adding more specialized instance variables and methods. the specialized class inherit the methods and instance variables of the previously general class.
Polymorphism: is the ability of an object to take on many forms.
Polymorphism: literally means 'a state of having many shapes' or 'the capacity to take on different forms'. In OOP, it means a language's ability to process objects of various types and classes through a single, uniform interface. It has two types: Compile time polymorphism(static binding) and Runtime polymorphism(dynamic binding). Method overloading is an example of static polymorphism, while method overriding is an example of dynamic polymorphism.
Access modifiers: private, public, protected
overriding VS overloading
overloading: within one class, you can have two or more definitions of a single method name, but different signatures.
signature: a method consists of the methods name and the list of types for parameters. Not include return type.
overriding is happened when the method in derived class inherited from based class will be changed.
method overriding is happened at run-time. while method overloading is happened in compile time.
abstract class VS interface
abstract class: is a class that is declared by the word abstract --it may or maynot include abstract methods. Abstract classes cannot be instantiated, but they can be subclassed. An abstract method is a method that declared without an implementation(without braces and followed by a semicolon), just with the signature. If a class include abstract methods, then the class itself must be declared abstract. When an abstract class is subclassed, the subclass usually provides implementation for all of the abstract methods in its parent class. However, if it does not, then the subclass must also be declared abstract. It can include default methods, which forces all the subclasses to carry on the same hierarchies or standards.
interface: is not a class, declared by the word interface. only contain a list of methods without an implementation(only signature, definition of the method without body). A class can implement more than one interface but can only inherit from one abstract class.