Module 01 - Java Class Design
-
Upload
john-yeary -
Category
Documents
-
view
3.235 -
download
1
description
Transcript of Module 01 - Java Class Design
![Page 1: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/1.jpg)
Java Class Design Oracle® Certified Professional, Java® SE 7 Programmer
Module 1
© 200
9-‐20
12 Jo
hn Yea
ry
![Page 2: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/2.jpg)
Module 1 -‐ Objectives
Ê Use access modifiers: private, protected, and public.
Ê Override methods.
Ê Overload constructors and other methods appropriately.
Ê Use the instanceof operator and casting.
Ê Use virtual method invocation.
Ê Override methods from the Object class to improve the functionality of your class.
Ê Use package and import statements.
![Page 3: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/3.jpg)
Access Modifiers
Ê public, protected, private, and package (default).
Ê public members (variables and methods) are visible to any calling class. This is also known as “The Public API”.
Ê protected members (variables and methods) are visible to classes in the same package, or sub-classes of the declared class.
Ê package (default). Please note that this is convention… there is no access modifier called package. These members are only visible to classes in the same package.
Ê private members (variables and methods) are only visible within the class.
![Page 4: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/4.jpg)
Access Modifiers (cont.)
Ê Access modifiers are applicable to static and instance variables and methods. The class will not compile if applied to a local variable.
Ê It is a best practice to make instance variables private, or protected (if you expect sub-classes) and provide accessors (getters) and mutators (setters).
![Page 5: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/5.jpg)
Overriding Methods
Ê A method must be implemented (overridden) if one these conditions exist Ê The class is implementing an interface. If the method is not
overridden, the class must be declared as abstract. Ê The class is extending an abstract class, and implementing
abstract methods. If all of the methods of the abstract class are not implemented, the class must be declared abstract.
Ê A method of a superclass may be overridden to provide additional specialization in the subclass.
Ê A class which contains a final method can sub-classed, but its sub-class can not override the final method in super-class.
![Page 6: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/6.jpg)
Overriding Methods (cont.)
Ê You can not override static, or final methods.
Ê The access level on the overriding method can not be more restrictive than the overridden method, but it may be less restrictive.
Ê It must have the same arguments, and return type.
Ê The return type may be “covariant”. This means that the return type may be a subtype of the original return type.
Ê It may throw any unchecked (runtime) Exception which may not be thrown in the super-class method.
Ê It may throw more specific exceptions than declared in the superclass, e.g., the super-class throws Exception, and the sub-class throws FileNotFoundException.
![Page 7: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/7.jpg)
Constructor Overloading
Ê Every class implicitly has a default no-name constructor if no other constructor is provided. it is always called on instantiation.
Ê A default no argument constructor is provided by the compiler if no other constructor is provided.
Ê A constructor consists of an access modifier and the class name.
Ê If a class declares a constructor which takes arguments, the sub-‐class must provide a constructor that takes the same arguments, or call super() with the same arguments.
Ê Constructors may take any number of arguments, and may call this() with the same argument list to daisy chain construction.
![Page 8: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/8.jpg)
Constructor Overloading (cont.)
Ê A call to super(), or this() must be the first call in the constructor.
Ê super() is called implicitly if not defined.
Ê Only one call to super(), or this() may be in any constructor.
![Page 9: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/9.jpg)
Method Overloading
Ê Overloaded methods must change the argument list
Ê It can have the same, or different return types.
Ê It can different access modifiers
Ê It can declare new, or broader exceptions.
Ê It may be overridden in the same class, or sub-classes.
Ê The reference type determines which overloaded method is invoked, not the object type.
![Page 10: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/10.jpg)
instanceof Operator
Ê It will cause a compiler error if the comparison is done with objects which are not in the same class hierarchy.
Ê Returns true if the type could be cast to the reference type without causing a ClassCastException, otherwise it is false.
Ê The operand can be a reference type, or null.
![Page 11: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/11.jpg)
Casting
Ê In order to use an object where it is hidden by a super-class reference, you must cast the object to the sub-class.
List list = new ArrayList(); ((ArrayList)list).ensureCapacity(10);
![Page 12: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/12.jpg)
Virtual Method Invocation
Ê All method calls are virtual method calls in Java, unless they are static.
Ê Virtual method invocation is the technical term for determining which method to invoke based on its class hierarchy. For example, If you call eat(); on the Animal interface. The concrete implementation of the method is called. It may be Dog.eat(); or Cat.eat();
![Page 13: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/13.jpg)
Override methods of Object Class
Ê The Object class contains four methods which are often overridden: Ê clone(); Ê equals(); Ê hashCode(); Ê toString();
Ê The most common method which is overridden is the toString() method. This should be a representation of the class.
![Page 14: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/14.jpg)
Packaging and import Statements
Ê Packaging is used for grouping of like classes, interfaces, and enums. This may include ancillary classes which are used by the public API.
Ê import statements are used to differentiate classes which may have the same name, but may have different methods.
Ê Classes in the same package do not need to be imported.
Ê Classes in the java.lang.* package do not need to be imported.§7.3
![Page 15: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/15.jpg)
References
Ê Java™ Language Specification, Java SE 7 Edition, James Gosling, Bill Joy, Guy Steele, Gilad Bracha, and Alex Buckley.
Ê Preparation for Java Programmer Language Certification
Ê Sun® Certified Java™ Programmer for Java™ 6 Study Guide, Kathy Sierra, and Bert Bates
![Page 16: Module 01 - Java Class Design](https://reader036.fdocuments.net/reader036/viewer/2022062404/55336cd84a795968588b4956/html5/thumbnails/16.jpg)
Attribution-‐NonCommercial-‐ShareAlike 3.0 Unported
This work is licensed under the Creative Commons Attribution-‐NonCommercial-‐ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-‐nc-‐sa/3.0/.