Java抽象类
Java 抽象类
一:什么是抽象类?
在面向对象的概念中在,所有的对象都是通过类来描绘的,但反过来讲,并不是所有的类都是用来描绘对象的。如果一个类中没有包含足够的信息来描绘一个具体的对象,这个类就是抽象类。父类包含了之类集合的常用方法,但是由于父类本身是抽象的,所以不能使用这些方法。
抽象类是指不允许被实例化的类;抽象方法是没有方法体的方法。
- 抽象类可以不包括抽象方法,反正它不会被实例化,里面的方法是不是抽象的本质上没有任何影响。
- 但是含有抽象方法的类绝不能被实例化,否则执行这个方法的时候,应该怎么办!
- 如果子类是非抽象的,那么它就必须实现父类中的抽象方法;否则,它继承来的抽象方法仍然没有方法体,也是个抽象方法,因此之类必须实现父类的抽象方法。
二:抽象类可以被继承吗?
- 抽象类可以被继承。
- 抽象类除了不能被实例化对象之外,类的其他功能依然存在,成员变量、成员方法及构造方法的访问方式和普通的类一样。
- 由于抽象类不能被实例化对象,所以抽象类必须被继承才能使用。也正因如此,在设计阶段决定要不要设计抽象类。
三:知识汇总
- abstract 是一个修饰符;
- 使用 abstract 修饰的类是抽象类;
- 使用 abstract 修饰的方法是抽象方法,抽象方法没有方法体;只能进行功能定义,没有功能实现,功能实现由之类完成;
- 实现抽象方法,就是给抽象方法加上方法体,去掉 abstract 修饰;
- 抽象类的目的:该类不能被实例化对象,只能被继承;
- 抽象方法一定在抽象类中成立;
- 抽象类中不一定由抽象方法,比如不想让某个类有对象,可以创建为抽象类;
- final 修饰的类不能被继承;
- final 修饰的成员方法不能被覆写;
- 抽象类就是用于被继承的;
- 抽象方法就是用于被覆写的;
- 因而 final 和 abstract 不能同时出现;
- 一个类若想继承一个抽象类,必须实现该抽象类的所有抽象方法;
- 一个抽象类如果想要继承一个抽象类,可以实现0~N个抽象方法;
- 虽然抽象类不能被创建对象,但是抽象类有构造方法,因为之类创建对象需要调用父类然后调用 Object 实现;
- abstract 是不能修饰静态方法的,因为静态方法不能被覆写;
- 抽象方法与成员方法一样,仅仅是没有方法体而已;
- 抽象方法必须被覆写,成员方法根据需求覆写;
四:抽象类应用场景
例如我们在定义父类的时候,仅仅知道父类的功能,不知道如何实现时;
举例:动物会运动;但是运动的方式不一样,有天上飞的、地下跑的、水里游的…
这是,我们就能定义为抽象类说明功能,具体的实现由实现类去完成;
五:代码示例
(1)父类
1 | public abstract class Animal { |
(2)子类
1 | public class Cat extends Animal{ |
1 | public abstract class Fish extends Animal{ |
1 | public class GoldFish extends Fish { |
(3)测试
1 | public class Demo { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 爱影客!

