diff options
| author | bk2dcradle <ankitsultana@gmail.com> | 2015-10-04 01:47:09 +0530 | 
|---|---|---|
| committer | bk2dcradle <ankitsultana@gmail.com> | 2015-10-04 18:30:19 +0530 | 
| commit | 6b6f88c64d9a4b2d26de5725dee24f3c459fb93c (patch) | |
| tree | 01d87771f6d83a7d1c4f2e580f54137e3daf66f3 /java.html.markdown | |
| parent | a743c831a07f5e846051b156152fe8e6ddcfb097 (diff) | |
Added abstract classes
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..2f41be81 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 initialise, however in an interface  +	// a variable is implicitly final and hence has +	// to be initialised. +	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 | 
