抽象类和具体类之间的区别
1)抽象类
在“抽象”的关键字是强制性的声明抽象类。
我们不能使用new关键字直接创建抽象类的对象,在这种情况下,我们可以定义所有抽象方法以及new关键字。
抽象类的例子
//用抽象关键字声明一个抽象类
abstract class AbstractClass {
//声明一个没有实现的抽象方法
abstract void printMethod();
}
public class ImplementedClass {
public static void main(String[] args) {
//创建抽象类的对象
//以及方法的实现。
AbstractClass ac = new AbstractClass() {
void printMethod() {
System.out.println("Hi, We are in Java World");
}
};
//调用抽象类方法
ac.printMethod();
}
}输出结果
D:\Programs>javac ImplementedClass.java D:\Programs>java ImplementedClass Hi, We are in Java World
注意:
一个抽象类可能会或可能不会包含抽象方法。
我们不能将抽象方法声明为final,因为如果我们将一个类声明为final,那么我们将需要实现所有方法,然后才可以实现这些方法。
2)具体类
我们并不需要前缀“抽象”在声明的具体类,如果我们包括“抽象的”类名之前的关键字那么它也将成为抽象的。
对于具体的类,我们可以使用new关键字直接创建此类的对象。
具体类示例
//用抽象关键字声明一个抽象类
abstract class AbstractClass {
//声明一个没有实现的抽象方法
abstract void printMethod();
}
//通过扩展抽象类定义具体类
class ConcreteClass extends AbstractClass {
//实现抽象方法
void printMethod() {
System.out.println("Hi,We are in Java World");
}
}
public class Main {
public static void main(String[] args) {
//直接使用new关键字创建具体类的对象。
ConcreteClass cc = new ConcreteClass();
//调用具体的类方法。
cc.printMethod();
}
}输出结果
D:\Programs>javac Main.java D:\Programs>java Main Hi,We are in Java World
注意:
对于具体类,它将不包含任何抽象方法,因为如果我们包含单个抽象方法,则该类将变为抽象。
对于具体类,我们可以将该类声明为final,因为它不包含抽象方法,因此需要关心实现。