mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-24 10:01:38 +00:00
Merge pull request #1334 from bk2dcradle/master
[java/en] Added abstract classes in java
This commit is contained in:
commit
9f7514f2d4
@ -451,6 +451,74 @@ public class ExampleClass extends ExampleClassParent implements InterfaceOne,
|
|||||||
public void InterfaceTwoMethod() {
|
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
|
## Further Reading
|
||||||
|
Loading…
Reference in New Issue
Block a user