diff options
Diffstat (limited to 'java.html.markdown')
| -rw-r--r-- | java.html.markdown | 68 | 
1 files changed, 68 insertions, 0 deletions
| diff --git a/java.html.markdown b/java.html.markdown index 928eb39f..89a710ee 100644 --- a/java.html.markdown +++ b/java.html.markdown @@ -451,6 +451,74 @@ public class ExampleClass extends ExampleClassParent implements InterfaceOne,  	public void InterfaceTwoMethod() {  	}  } + + +// Abstract Classes  +// Abstract Class declaration syntax +// <access-level> abstract <abstract-class-name> extends <super-abstract-classes> { +//     // Constants and variables +//     // Method declarations +// } + +// Methods can't have bodies in an interface, unless the method is +// static. Also variables are NOT final by default, unlike an interface. +// Also abstract classes CAN have the "main" method. +// Abstract classes solve these problems. + +public abstract class Animal  +{ +	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"); +	} +} + +class Dog extends Animal +{ +	// 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(); +	} +} +  ```  ## Further Reading | 
