minte9
LearnRemember / JAVA



Classes

Abstract classes can't be instantiated.
 
/**
 * By marking the class abstract, you can prevent instantiation.
 * 
 * What exactly is an Animal object, what color, what size?
 * We don't know, so the class must be defined as abstract.
 */

package com.minte9.oop.abstract_keyword;

public class Classes {
    public static void main(String[] args) {
        
        new Dog("gray");

        //new Animal(); // force compile error - what color?
    }
}

abstract class Animal {
    protected String color;
    public Animal(String c) {
        color = c;
    }
}

class Dog extends Animal {
    public Dog(String c) {
        super(c);
    }
}

Methods

An abstract method must be overridden.
 
/**
 * An abstract class means ... the class must be extended.
 * An abstract method means ... the method must be overridden.
 */

package com.minte9.oop.abstract_keyword;

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

    public abstract void setValue(); // abstract

    public void setName() { // non-abstract

    } 
}

class D extends A {
    
    @Override 
    public void setValue() { // Look Here

    }
}






Questions and answers




To prevent class instantiation you must use

  • a) final method
  • b) abstract class

An abstract class must be:

  • a) instantiated
  • b) extended

An abstract method must be:

  • a) extended
  • b) overridden

Which one is correct?

  • a) abstract void foo();
  • b) abstract void foo() {}

What's the purpose of making a class abstract?

  • a) to prevent instantiation
  • b) encapsulation


References