Java基础 第二节 第十二课
【摘要】
抽象类
概述由来定义
abstract 使用格式抽象方法抽象类抽象的使用
注意事项
概述
由来
父类中的方法, 被它的子类们重写. 子类各自实现都不尽相同. 那么父类的方法声明和...
概述
由来
父类中的方法, 被它的子类们重写. 子类各自实现都不尽相同. 那么父类的方法声明和方法主体, 只有声明还有意义, 而方法主体则没有存在的意义了. 我们把没有方法主体的方法称为抽象方法. Java 语法规定, 包含抽象方法的类就是抽象类.
定义
- 抽象方法: 没有方法体的方法
- 抽象类: 包含抽象方法的类
abstract 使用格式
抽象方法
使用 abstract 关键词修饰方法, 该方法就成了抽象方法, 抽象方法只包含一个方法名, 没有方法实体.
定义格式:
修饰符 abstract 返回值类型 方法名 (参数列表);
- 1
代码举例:
public abstract void run();
- 1
抽象类
如果一个类包含抽象方法, 那么该类必须是抽象类.
定义格式:
abstract class 类名字 {
}
- 1
- 2
- 3
代码举例:
public abstract class Animal {
public abstract void run();
}
- 1
- 2
- 3
抽象的使用
继承抽象类的子类必须重写父类所有的抽象方法. 否则, 该子类也必须声明为抽象类. 最终, 必须有子类实现父类的抽象方法. 否则, 从最初的父类到最终的子类都不能创建对象, 失去意义.
代码举例:
public class Cat extends Animal {
@Override
public void run() {
System.out.println("小猫在墙头走...");
}
}
class CatTest {
public static void main(String[] args) {
// 创建子类对象
Cat c = new Cat();
// 调用run方法
c.run(); // 输出结果: 小猫在墙头走...
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
此时的方法重写, 是子类对父类抽象方法的完整试下. 我们将这种方法重写的操作, 也叫做实现方法.
注意事项
关于抽象类的使用, 以下为语法上要注意的细节. 虽然条目较多, 但若理解了抽象的本质, 则无需死记硬背.
- 抽象类不能创建对象, 如果创建,编译无法通过而报错. 只能创建其非抽象子类的对象. (假设创建了抽象类的对象, 调用抽象方法, 而抽象方法没有具体的方法体, 没有意义)
- 抽象类中, 可以有构造方法, 是供子类创建对象是, 初始化父类成员使用的. (子类的构造方法中, 有默认的 super(), 需要访问父类构造方法)
- 抽象类中, 不一定包含抽象方法, 但是有抽象方法的类必定是抽象类. (未包含抽象方法的抽象类, 目的就是不想让调用者创建该类对象, 通常用于某些特殊的类结构设计)
- 抽象类的子类, 必须重写抽象父类中所有的抽象方法. 否则, 编译无法通过而报错. 除非该子类也是抽象类. (假设不重写所有抽象方法, 则类中可能包含抽象方法. 那么创建对象后, 调用抽象的方法, 没有意义)
文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。
原文链接:iamarookie.blog.csdn.net/article/details/110116859
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)