minte9
LearnRemember



Inheritance

Don't use inheritance just to reuse code.
 
/**
 * Inheritance means that a subclass extends a super class.
 * Superclasses defines what subclasses have in common ...
 * then abstract those features. 
 * 
 * Every class in Java extends class Object.
 * Object is the only class that has no superclass.
 */

package com.minte9.oop.inheritance;

public class Inheritance {
    public static void main(String[] args) {

        Dog dog = new Dog();
        dog.setAction("barking");
        dog.action(); // The Dog is barking

        Bird bird = new Bird();
        bird.setAction("flying");
        bird.action(); // The Bird is flying
    }
}

abstract class Animal {

    public String action;
    public void setAction(String a) { 
        action = a; 
    }
    public abstract void action();
}

class Dog extends Animal {
    @Override public void action() {
        System.out.println(
            "The Dog is " + action
        );
    }
}

class Bird extends Animal {
    @Override public void action() {
        System.out.println(
            "The Bird is " + action
        );
    }
}

Annotation

Override annotation acts as a compile-time safeguard.
 
/**
 * Abstract method with no Override annotation ...
 * will throw error only at compile time.
 */

package com.minte9.oop.inheritance;

public class Annotation {
    public static void main(String[] args) {
        new MyClass();
    }
}

abstract class MyAbstractClass {
    abstract public void setName();
}

class MyClass extends MyAbstractClass {

    // Wrong method name - with no Override annotation)
    public void setNames() {}

    // Correct - with Override annotation
    @Override 
    public void setName() {}
}

Super

The super() method is used to call parent constructor.
 
/**
 * super() method is used to call parent constructor
 * It must be the first statement in each controller
 */

package com.minte9.oop.inheritance;

public class Super {
    public static void main(String[] args) {
        new A();
    }
}

class A extends ParentClass {
    public A() {
        super(); // Parent constructor
    }

    /*
    public void A(String s) { 
            // Wrong, void is the first statement
        super(s);
    }
    */
}

class ParentClass {
    public ParentClass() {
        System.out.println("Parent constructor");
    }
}



  Last update: 303 days ago