Guest User

Untitled

a guest
Oct 19th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.57 KB | None | 0 0
  1. package classes;
  2.  
  3. /**
  4. * Created by Gowtham on 18-10-2017
  5. * An outer class with static and non-static (inner) nested classes
  6. */
  7. @SuppressWarnings({"unused", "WeakerAccess", "FieldCanBeLocal"})
  8. public class OuterClass {
  9.  
  10. public static String outerPublicStaticVar = "outerPublicStaticVar";
  11. private static String outerPrivateStaticVar = "outerPrivateStaticVar";
  12. public String outerPublicVar = "outerPublicVar";
  13. private String outerPrivateVar = "outerPrivateVar";
  14.  
  15. public OuterClass() {
  16. System.out.println("OuterClass object created.");
  17. }
  18.  
  19. public static String outerPublicStaticMethod() {
  20. return "outerPublicStaticMethod";
  21. }
  22.  
  23. private static String outerPrivateStaticMethod() {
  24. return "outerPrivateStaticMethod";
  25. }
  26.  
  27. public static void accessStaticNestedClassMembersFromStaticMethod() {
  28. System.out.println(StaticNestedClass.staticNestedPublicStaticVar);
  29. System.out.println(StaticNestedClass.staticNestedPrivateStaticVar);
  30. System.out.println(new StaticNestedClass().staticNestedPublicVar);
  31. System.out.println(new StaticNestedClass().staticNestedPrivateVar);
  32.  
  33. System.out.println(StaticNestedClass.staticNestedPublicStaticMethod());
  34. System.out.println(StaticNestedClass.staticNestedPrivateStaticMethod());
  35. System.out.println(new StaticNestedClass().staticNestedPublicMethod());
  36. System.out.println(new StaticNestedClass().staticNestedPrivateMethod());
  37. }
  38.  
  39. public static void accessInnerClassMembersFromStaticMethod() {
  40. OuterClass.InnerClass innerClassObject = new OuterClass().new InnerClass();
  41.  
  42. System.out.println(innerClassObject.innerPublicVar);
  43. System.out.println(innerClassObject.innerPrivateVar);
  44.  
  45. System.out.println(innerClassObject.innerPublicMethod());
  46. System.out.println(innerClassObject.innerPrivateMethod());
  47.  
  48. }
  49.  
  50. public void accessStaticNestedClassMembersFromNonStaticMethod() {
  51. System.out.println(StaticNestedClass.staticNestedPublicStaticVar);
  52. System.out.println(StaticNestedClass.staticNestedPrivateStaticVar);
  53. System.out.println(new StaticNestedClass().staticNestedPublicVar);
  54. System.out.println(new StaticNestedClass().staticNestedPrivateVar);
  55.  
  56. System.out.println(StaticNestedClass.staticNestedPublicStaticMethod());
  57. System.out.println(StaticNestedClass.staticNestedPrivateStaticMethod());
  58. System.out.println(new StaticNestedClass().staticNestedPublicMethod());
  59. System.out.println(new StaticNestedClass().staticNestedPrivateMethod());
  60. }
  61.  
  62. public void accessInnerClassMembersFromNonStaticMethod() {
  63. OuterClass.InnerClass innerClassObject = new OuterClass().new InnerClass();
  64.  
  65. System.out.println(innerClassObject.innerPublicVar);
  66. System.out.println(innerClassObject.innerPrivateVar);
  67.  
  68. System.out.println(innerClassObject.innerPublicMethod());
  69. System.out.println(innerClassObject.innerPrivateMethod());
  70. }
  71.  
  72. public String outerPublicMethod() {
  73. return "outerPublicMethod";
  74. }
  75.  
  76. private String outerPrivateMethod() {
  77. return "outerPrivateMethod";
  78. }
  79.  
  80. // Static Nested Class can be public or private.
  81. public static class StaticNestedClass {
  82.  
  83. // Static Nested Class can define both static and non-static variables.
  84. public static String staticNestedPublicStaticVar = "staticNestedPublicStaticVar";
  85. private static String staticNestedPrivateStaticVar = "staticNestedPrivateStaticVar";
  86. public String staticNestedPublicVar = "staticNestedPublicVar";
  87. private String staticNestedPrivateVar = "staticNestedPrivateVar";
  88.  
  89. // Static Nested Class can be instantiated.
  90. public StaticNestedClass() {
  91. System.out.println("StaticNestedClass object created.");
  92. }
  93.  
  94. // Static Nested Class can define both static and non-static methods.
  95. public static String staticNestedPublicStaticMethod() {
  96. return "staticNestedPublicStaticMethod";
  97. }
  98.  
  99. private static String staticNestedPrivateStaticMethod() {
  100. return "staticNestedPrivateStaticMethod";
  101. }
  102.  
  103. // Static Nested Class can access public & private static variables and methods of Outer class.
  104. // It cannot access non-static variables and methods of Outer class.
  105. public static void outerAccessFromPublicStaticMethod() {
  106. System.out.println(outerPublicStaticVar);
  107. System.out.println(outerPrivateStaticVar);
  108.  
  109. System.out.println(outerPublicStaticMethod());
  110. System.out.println(outerPrivateStaticMethod());
  111. }
  112.  
  113. private static void outerAccessFromPrivateStaticMethod() {
  114. System.out.println(outerPublicStaticVar);
  115. System.out.println(outerPrivateStaticVar);
  116.  
  117. System.out.println(outerPublicStaticMethod());
  118. System.out.println(outerPrivateStaticMethod());
  119. }
  120.  
  121. public String staticNestedPublicMethod() {
  122. return "staticNestedPublicMethod";
  123. }
  124.  
  125. private String staticNestedPrivateMethod() {
  126. return "staticNestedPrivateMethod";
  127. }
  128.  
  129. // Static Nested Class can access public & private static variables and methods of Outer class.
  130. // It cannot access non-static variables and methods of Outer class.
  131. public void outerAccessFromPublicMethod() {
  132. System.out.println(outerPublicStaticVar);
  133. System.out.println(outerPrivateStaticVar);
  134.  
  135. System.out.println(outerPublicStaticMethod());
  136. System.out.println(outerPrivateStaticMethod());
  137. }
  138.  
  139. private void outerAccessFromPrivateMethod() {
  140. System.out.println(outerPublicStaticVar);
  141. System.out.println(outerPrivateStaticVar);
  142.  
  143. System.out.println(outerPublicStaticMethod());
  144. System.out.println(outerPrivateStaticMethod());
  145. }
  146. }
  147.  
  148. // Inner Class can be public or private.
  149. public class InnerClass {
  150.  
  151. // Inner Class can define only non-static variables.
  152. public String innerPublicVar = "innerPublicVar";
  153. private String innerPrivateVar = "innerPrivateVar";
  154.  
  155. // Inner Class can be instantiated.
  156. public InnerClass() {
  157. System.out.println("InnerClass object created.");
  158. }
  159.  
  160. // Inner Class can define only non-static methods.
  161. public String innerPublicMethod() {
  162. return "innerPublicMethod";
  163. }
  164.  
  165. private String innerPrivateMethod() {
  166. return "innerPrivateMethod";
  167. }
  168.  
  169. // Inner Class can access public & private, static & non-static variables and methods of Outer class.
  170. public void outerAccessFromPublicMethod() {
  171. System.out.println(outerPublicStaticVar);
  172. System.out.println(outerPrivateStaticVar);
  173. System.out.println(outerPublicVar);
  174. System.out.println(outerPrivateVar);
  175.  
  176. System.out.println(outerPublicStaticMethod());
  177. System.out.println(outerPrivateStaticMethod());
  178. System.out.println(outerPublicMethod());
  179. System.out.println(outerPrivateMethod());
  180. }
  181.  
  182. private void outerAccessFromPrivateMethod() {
  183. System.out.println(outerPublicStaticVar);
  184. System.out.println(outerPrivateStaticVar);
  185. System.out.println(outerPublicVar);
  186. System.out.println(outerPrivateVar);
  187.  
  188. System.out.println(outerPublicStaticMethod());
  189. System.out.println(outerPrivateStaticMethod());
  190. System.out.println(outerPublicMethod());
  191. System.out.println(outerPrivateMethod());
  192. }
  193. }
  194.  
  195. }
Add Comment
Please, Sign In to add comment