diff options
Diffstat (limited to 'java.html.markdown')
-rw-r--r-- | java.html.markdown | 77 |
1 files changed, 67 insertions, 10 deletions
diff --git a/java.html.markdown b/java.html.markdown index 5c230501..61478968 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -50,9 +50,9 @@ public class LearnJava { System.out.printf("pi = %.5f", Math.PI); // => pi = 3.14159 /////////////////////////////////////// - // Variables + // Variables /////////////////////////////////////// - + /* * Variable Declaration */ @@ -336,29 +336,29 @@ public class LearnJava { // toString returns this Object's string representation. System.out.println("trek info: " + trek.toString()); - + // Double Brace Initialization // The Java Language has no syntax for how to create static Collections // in an easy way. Usually you end up in the following way: - + private static final Set<String> COUNTRIES = new HashSet<String>(); static { validCodes.add("DENMARK"); validCodes.add("SWEDEN"); validCodes.add("FINLAND"); } - + // But there's a nifty way to achive the same thing in an // easier way, by using something that is called Double Brace // Initialization. - + private static final Set<String> COUNTRIES = HashSet<String>() {{ add("DENMARK"); add("SWEDEN"); - add("FINLAND"); + add("FINLAND"); }} - - // The first brace is creating an new AnonymousInnerClass and the + + // The first brace is creating an new AnonymousInnerClass and the // second one declares and instance initializer block. This block // is called with the anonymous inner class is created. // This does not only work for Collections, it works for all @@ -513,7 +513,12 @@ public class ExampleClass extends ExampleClassParent implements InterfaceOne, } } +<<<<<<< HEAD // Abstract Classes +======= + +// Abstract Classes +>>>>>>> adambard/master // Abstract Class declaration syntax // <access-level> abstract <abstract-class-name> extends <super-abstract-classes> { // // Constants and variables @@ -528,8 +533,9 @@ public class ExampleClass extends ExampleClassParent implements InterfaceOne, // unless the method is static, and variables are final by default, unlike an // abstract class. Also abstract classes CAN have the "main" method. -public abstract class Animal +public abstract class Animal { +<<<<<<< HEAD public abstract void makeSound(); // Method can have a body @@ -555,10 +561,38 @@ public abstract class Animal { System.out.println("I am abstract"); } +======= + public abstract void makeSound(); + + // Method can have a body + public void eat() + { + System.out.println("I am an animal and I am Eating."); + // Note: We can access private variable here. + age = 30; + } + + // No need to initialize, however in an interface + // a variable is implicitly final and hence has + // to be initialized. + private int age; + + public void printAge() + { + System.out.println(age); + } + + // Abstract classes can have main function. + public static void main(String[] args) + { + System.out.println("I am abstract"); + } +>>>>>>> adambard/master } class Dog extends Animal { +<<<<<<< HEAD // Note still have to override the abstract methods in the // abstract class. @Override @@ -580,6 +614,29 @@ class Dog extends Animal pluto.eat(); pluto.printAge(); } +======= + // Note still have to override the abstract methods in the + // abstract class. + @Override + public void makeSound() + { + System.out.println("Bark"); + // age = 30; ==> ERROR! age is private to Animal + } + + // NOTE: You will get an error if you used the + // @Override annotation here, since java doesn't allow + // overriding of static methods. + // What is happening here is called METHOD HIDING. + // Check out this awesome SO post: http://stackoverflow.com/questions/16313649/ + public static void main(String[] args) + { + Dog pluto = new Dog(); + pluto.makeSound(); + pluto.eat(); + pluto.printAge(); + } +>>>>>>> adambard/master } // Final Classes |