抽象方法和抽象类

抽象类:没有直接对应的对象,表达的是抽象概念,一般是具体类的比较上层的父类。

比如,猫是具体对象,动物则是抽象概念;芒果是具体对象,图形是抽象概念。

抽象方法和抽象类

抽象方法和抽象类都是用abstract关键字来声明。

1
2
3
4
public abstract class Shape {
//...其他代码
public abstract void draw();
}

定义了抽象方法的类必须被声明为抽象类,但抽象类可以没有抽象方法

抽象类可以定义具体方法、实例变量等。

抽象类与具体类的核心区别:抽象类不能创建对象,比如不能使用new Shape(),而具体类可以。

抽象类不能创建对象,要创建对象,必须使用它的具体子类。

一个类在继承抽象类后,必须实现抽象类中定义的所有抽象方法,除非它自己也声明为抽象类。

Circle类的实现代码,如下所示:

1
2
3
4
5
6
7
public class Circle extends Shape {
//...其他代码
@Override
public void draw() {
//....
}
}

Circle实现了draw()方法。

与接口类似,抽象类虽然不能使用new,但可以声明抽象类的变量,引用抽象类具体子类的对象。

如下所示:

1
2
Shape shape = new Circle();
shape.draw();

shape是抽象类Shape类型的变量,引用了具体子类Circle的对象,调用draw方法将调用Circle的draw代码。

  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2021 Silver Shaded
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信