Java抽象类和接口

Posted Acapplella

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java抽象类和接口相关的知识,希望对你有一定的参考价值。

抽象类

在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,那么这样的类称为抽象类。需要注意的是上面我们并没有强调一个抽象类必须要拥有抽象方法。也就是说,一个类只要它没有包含足够的信息来描绘一个具体的对象,那么它就可以称之为抽象类。
类:属性(0或多个)+方法(0或多个)
一个完整(健康)的类,所有的方法都有实现(方法体)
类可以没有方法,但是有方法就肯定要有实现,这才是一个完整的类
一个完整的类才可以被实例化出来,被new出来
如果一个类暂时有方法未有实现,需要被定义为抽象类

public abstract class Shape{
    int area;
    public abstract void calArea();
}
  • 抽象类由关键字abstract声明
  • 抽象类的组成
    -(optional)成员变量,个数不限
    -(optional) 具体方法,方法有实现,个数不限
    -(optional)抽象方法,加abstract关键字,个数不限
  • 抽象类也是类。一个类继承于抽象类,就不能继承于其他的(抽象)类
  • 子类可以继承于抽象类,但是一定要实现父类们所有abstract的方法。如果不能完全实现,那么子类也必须被定义为抽象类。
  • 只有实现父类的所有抽象方法,才能变成完整类。
    如果一个方法使用 abstract 来修饰,则说明该方法是抽象方法,抽象方法只有声明没有实现。需要注意的是 abstract 关键字只能用于普通方法,不能用于 static 方法或者构造方法中。
    抽象方法的 3 个特征如下:
  • 抽象方法没有方法体
  • 抽象方法必须存在于抽象类中
  • 子类重写父类时,必须重写父类所有的抽象方法
    注意:在使用 abstract 关键字修饰抽象方法时不能使用 private 修饰,因为抽象方法必须被子类重写,而如果使用了 private 声明,则子类是无法重写的。
    抽象类的定义和使用规则如下:
    1.抽象类和抽象方法都要使用 abstract 关键字声明。
    2.如果一个方法被声明为抽象的,那么这个类也必须声明为抽象的。而一个抽象类中,可以有 0~n 个抽象方法,以及 0~n 个具体方法。
    3.抽象类不能实例化,也就是不能使用 new 关键字创建对象。















以上是关于Java抽象类和接口的主要内容,如果未能解决你的问题,请参考以下文章

Java学习笔记—抽象类和接口

Java基础:抽象类和接口

Java抽象类和接口

Java基础5:抽象类和接口

Java抽象类和接口4000+字深度剖析

java中抽象类和接口的异同点