This chapter discusses object-oriented programming concepts like encapsulation, inheritance, polymorphism, abstract classes, and exception handling in Java. Encapsulation involves making data fields private and controlling access via public methods. Inheritance allows classes to extend existing classes and polymorphism means that subclasses can override methods of the parent class. Abstract classes cannot be instantiated and serve as a base for subclasses, while exceptions are used to handle errors.
3. ENCAPSULATION Encapsulation is the ability of an object to be a container (or capsule) for related properties (ie. data variables) and methods (ie. functions). Older languages did not enforce any property/method relationships. This often resulted in side effects where variables had their contents changed or reused in unexpected ways and spaghetti code that was difficult to unravel, understand and maintain. Encapsulation is one of three fundamental principles in object oriented programming .
4. DATA HIDING Data hiding is the ability of objects to shield variables from external access. It is a useful consequence of the encapsulation principle. Those variables marked as private can only be seen or modified through the use of public accessor and mutator methods. This permits validity checking at run time. Access to other variables can be allowed but with tight control on how it is done. Methods can also be completely hidden from external use. Those that are made visible externally can only be called by using the object's front door (ie. there is no 'goto' branching concept).
12. Constructors are used to initialize instance variables There is always at least one constructor in every class. If a programmer does not define a constructor, the compiler automatically creates one.
16. Final items cannot be modified. In the case of classes and methods, it means they cannot be extended or overridden, respectively. Native methods are implemented using a language other than Java, usually C or C++. Synchronized methods can be executed by only one thread at a time. Volatile fields are eliminated from certain compiler optimizations regarding references to them. Transient fields are ones that will not be saved when an object is serialized. Static items can be referenced using the name of the class in which they are defined to access them. They are not associated with class instances, although they can be referenced using instance variables. Final items cannot be modified. In the case of classes and methods, it means they cannot be extended or overridden, respectively. MODIFIERS/ QUALIFIERS
29. COMPOSITION A CLASS CAN HAVE REFERENCES TO OBJECT OF OTHER CLASSES AS MEMBER. set modify the variable value to ensure the new value is approximate for that data item. get - control how the client can access the variable.
32. PRIVATE STRING NAME +setName(name:String):void +setGrade(grade:double):void () attributes or parameter argument
33. This class declaration. The class body ( the area between the braces) contains all The code that provides for the objects created from the class: constructors for Initializing new objects, declaring for the fields that provide the state of the class and its object, and methods to implement the behavior of the class and its objects.
34. Field declarations are composed of 3 components in order: Zero or more modifiers such as public and private The fields type. 3. The fields name.
39. toString The toString method is widely implemented. It provides a simple, convenient mechanism for debugging classes during development. It is also widely used for logging, and for passing informative error messages to Exception constructors and assertions. When used in these informal ways, the exact format of toString is not part of the contract of the method, and callers should not rely on the exact format of the returned String. The toString method may occasionally be used more formally, however. An example is a simple mechanism for translating an object into a well-defined textual form (toString) and back again (valueOf). In this case, it is particularly important to specify the exact form of such text in javadoc. When implementing toString, StringBuilder can be used instead of the + concatenation operator, since the StringBuilder.append operation is slightly faster.
71. INHERITANCE indicates the capability of a class to be inherited or extended by other classes. abstract classes must be extended and final classes can never be extended by inheritance. The default (ie. omitted) indicates that the class may or may not be extended at the programmers discretion. Class_name has initial letter capitalized by Java convention. The third option of extends is described in the tutorial on inheritance . The fourth option of implements is described in the tutorial on interfaces .