|
102 | 102 | - [Example](src/main/java/com/in28minutes/java/oops/inheritance/overriding/OverridingRules.java)
|
103 | 103 |
|
104 | 104 | ##Interface
|
| 105 | +- An interface is a contract: the guy writing the interface says, "hey, I accept things looking that way" |
| 106 | +- Interface represents common actions between Multiple Classes. |
105 | 107 | - Basic Example : [Flyable](src/main/java/com/in28minutes/java/oops/interfaces/Flyable.java)
|
106 | 108 | [Aeropane](src/main/java/com/in28minutes/java/oops/interfaces/Aeroplane.java) [Bird](src/main/java/com/in28minutes/java/oops/interfaces/Bird.java)
|
107 | 109 | - Rules and Examples : [Rules](src/main/java/com/in28minutes/java/oops/interfaces/IntefaceRules.java) [More Examples](src/main/java/com/in28minutes/java/oops/interfaces/InterfaceExamples.java)
|
108 | 110 |
|
109 | 111 | ##Java and Multiple Inheritance
|
110 | 112 | - Java does not support multiple inheritance.
|
111 | 113 | - However, A class can implement multiple interfaces. But, thats not Multiple inheritance in my book.
|
| 114 | +- An example of a class in the JDK that implements several interfaces is HashMap, which implements the interfaces Serializable, Cloneable, and Map<K, V>. By reading this list of interfaces, you can infer that an instance of HashMap (regardless of the developer or company who implemented the class) can be cloned, is serializable (which means that it can be converted into a byte stream; see the section Serializable Objects), and has the functionality of a map. |
| 115 | + |
112 | 116 | ##Abstract Class
|
113 |
| -- [Abstract Class](docs/abstract-class.md) |
114 |
| -Abstract Class vs Interface |
115 |
| -- TODO |
116 |
| -Polymorphism |
| 117 | +- Abstract Class uses Inheritance and hence is an implementation of IS-A relationship between classes. |
| 118 | +- If you want to provide common, implemented functionality among all implementations of your component, use an abstract class. Abstract classes allow you to partially implement your class. |
| 119 | +- Example - Animal, Cat, Dog |
| 120 | +- An example of an abstract class in the JDK is AbstractMap, which is part of the Collections Framework. Its subclasses (which include HashMap, TreeMap, and ConcurrentHashMap) share many methods (including get, put, isEmpty, containsKey, and containsValue) that AbstractMap defines. |
| 121 | +- [Another Example - Spring AbstractController] (https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/AbstractController.java) |
| 122 | +- [More Details](docs/abstract-class.md) |
| 123 | + |
| 124 | +##Abstract Class vs Interface |
| 125 | +- Real Difference - Apple vs Orange |
| 126 | +- Syntactical Differences For a Dumb Interviewer |
| 127 | + - Methods and members of an abstract class can have any visibility. All methods of an interface must be public. |
| 128 | + - A concrete child class of an Abstract Class must define all the abstract methods. An Abstract child class can have abstract methods. An interface extending another interface need not provide default implementation for methods inherited from the parent interface. |
| 129 | + - A child class can only extend a single class. An interface can extend multiple interfaces. A class can implement multiple interfaces. |
| 130 | + - A child class can define abstract methods with the same or less restrictive visibility, whereas a class implementing an interface must define all interface methods as public |
| 131 | + |
| 132 | +##Polymorphism |
117 | 133 | - [Polymorphism](docs/inheritance-and-polymorphism.md)
|
118 |
| -Abstraction |
119 |
| -Encapsulation |
120 |
| -- See EncapsulationExample.java |
121 |
| -Inner Class |
122 |
| -- See /src/main/java/com/in28minutes/java/innerclass/InnerClassExamples.java |
123 |
| -- See /JavaInterviewGuide/src/main/java/com/in28minutes/java/innerclass/AnonymousClass.java |
124 |
| -Final Modifier |
125 |
| -- See FinalClass.java |
126 |
| -- See FinalMemberModifiersExample.java |
127 |
| -Member Access Modifiers |
| 134 | + |
| 135 | +##Abstraction |
| 136 | +- Base of all programming |
| 137 | + |
| 138 | +##Encapsulation |
| 139 | +- [Example](src/main/java/com/in28minutes/java/oops/encapsulation/EncapsulationExample.java) |
| 140 | + |
| 141 | +##Inner Class |
| 142 | +- [Example](src/main/java/com/in28minutes/java/innerclass/InnerClassExamples.java) |
| 143 | +- [Example](src/main/java/com/in28minutes/java/innerclass/AnonymousClass.java) |
| 144 | + |
| 145 | +#Access and Non Access Modifiers |
| 146 | + |
| 147 | +##Final Modifier |
| 148 | +- [Final Class](src/main/java/com/in28minutes/java/classmodifiers/nonaccess/finalclass/FinalClass.java) |
| 149 | +- [Final Member Variable](src/main/java/com/in28minutes/java/membermodifiers/nonaccess/FinalMemberModifiersExample.java) |
| 150 | + |
| 151 | +##Member Access Modifiers |
128 | 152 | - See Package com.in28minutes.java.membermodifiers.access
|
129 | 153 | Class Access Modifiers
|
130 | 154 | - See Package com.in28minutes.java.classmodifiers.defaultaccess
|
|
0 commit comments