Java 抽象类

Java教程 - Java抽象类


抽象类是抽象的想法或概念。例如,int数据类型是一个具体的数据类型,double是另一个数据类型具体数据类型。 他们都是数字。 这里数字是一个抽象的概念。形状是另一个例子。 我们可以有备用,矩形或三角形或圆形。 他们都是具体的,而形状是一个抽象类。

在Java中,我们使用抽象类来定义抽象概念。 抽象概念必须有一些抽象方面。 例如,抽象概念是Shape,而抽象方面是如何计算面积。抽象概念在Java中变成抽象类,抽象方面成为抽象方法。


语法

您可以要求通过指定子类来重写某些方法抽象类型修饰符。要声明抽象方法,请使用以下一般形式:

abstract type name(parameter-list);

抽象方法没有方法体。任何包含一个或多个抽象方法的类也必须声明为抽象。

abstract class MyAbstractClass{
   abstract type name(parameter-list); 
}

这里是一个抽象类,后面是一个实现其抽象方法的类。

 
abstract class MyAbstractClass {
  abstract void callme();

  void callmetoo() {
    System.out.println("This is a concrete method.");
  }
}

class B extends MyAbstractClass {
  void callme() {
    System.out.println("B"s implementation of callme.");
  }
}

public class Main {
  public static void main(String args[]) {
    B b = new B();
    b.callme();
    b.callmetoo();
  }
}

输出:


例子

下面的代码将 Shape 类定义为abstract。  shape 类有抽象方法称为area()。 Rectangle 类扩展抽象类 Shape 并为其自身实现area()方法。

 
abstract class Shape {
  double height;
  double width;

  Shape(double a, double b) {
    height = a;
    width = b;
  }
  abstract double area();
}

class Rectangle extends Shape{
  Rectangle(double a, double b) {
    super(a, b);
  }
  double area() {
    System.out.println("Inside Area for Rectangle.");
    return height * width;
  }
}
class Triangle extends Shape{
  Triangle(double a, double b) {
    super(a, b);
  }
  double area() {
    System.out.println("Inside Area for Triangle.");
    return height * width / 2;

  }
}

public class Main {
  public static void main(String args[]) {
    Rectangle r = new Rectangle(10, 5);
    Triangle t = new Triangle(10, 8);

    Shape figref;

    figref = r;
    System.out.println("Area is " + figref.area());

    figref = t;
    System.out.println("Area is " + figref.area());
  }
}

输出: