...
This implies that a variable can obscure a type or a package, and a type can obscure a package name. Shadowing, on the other hand, refers to masking variables, fields, types, method parameters, labels, and exception handler parameters in a subscope. Both these differ from hiding wherein an accessible member (typically non-private) that should have been inherited by a subclass is forgone in lieu of a locally declared subclass member that assumes the same name.
In general, do not
...
reuse the name of
- a superclass
- Reuse the name of an interface
- Reuse the name of a field defined in a superclass
- Reuse the name of a field that appears in a different scope within the same method
- Reuse the name of a field, type, or another parameter across packages
...
Code Block | ||
---|---|---|
| ||
class Vector { private int val = 1; public boolean isEmpty() { if (val == 1) { //compares with 1 instead of 0 return true; } else { return false; } } //other functionality is same as java.util.Vector } // import java.util.Vector; omitted public class VectorUser { public static void main(String[] args) { Vector v = new Vector(); if (v.isEmpty()) { System.out.println("Vector is empty"); } } } |
...