前言
温故而知新
最近从头来看当初学过的语法知识点, 温故而知新, 发现当初还有许多未掌握的知识, 所以我建议大家也要多温故, 可能当初有好多知识点是没掌握到的.
这篇博客的重点就是介绍抽象类与接口, 并阐述他们的区别.
一. 抽象类
1. 概念
在面向对象的概念中, 所有的对象都是通过类来实现的, 但是呢不是所有的类都是用来描述对象的. 如果一个类中没有足够的信息来描绘一个具体的对象, 那么这样的类就是抽象类.
举个例子:
class Animal {
public void call() {
}
}
class Dog extends Animal {
@Override
public void call() {
System.out.println("小狗 汪汪汪");
}
}
class Cat extends Animal {
@Override
public void call() {
System.out.println("小猫 喵喵喵");
}
}
因为不同的动物叫声都不一样, 并且 Animal 不是一个具体的动物, 因此它内部的 call() 也不能具体的实现, 我这写的是 Dog类 和 Cat类 继承 Animal类, 因为他们都是动物并且他俩也有自己的叫声, 所以来实现 call(), 因此 Animal类 可以设计为 "抽象类".
像这种, 发出叫声的都是Animal的各种子类的 call() 实现的, 像这种没有实际工作的方法, 我们可以把他设计成抽象方法, 包含抽象方法的类被称之为抽象类.
2. 语法
// 抽象类,