我们先说抽象类的概念
抽象类陈述的是一种概念 比如 动物
但动物有很多种 抽象的 不具体的
我们可以说 这个类描述动物 那么 他就可以是猫 也可以说是狗
我们还是先写代码
先创建一个包 包下面放三个文件
animal 动物类
参考代码如下啊
public abstract class animal {
public abstract void eatSomething();
}
eatSomething和以往的方法不太一样 因为他没有方法体 abstract 声明一个抽象方法 抽象方法必须在抽象类里 如果普通 类 声明抽象方法 则直接报错
然后 我们创建一个 cat 猫类
cat 类 参考代码如下
public class cat extends animal {
public void eatSomething(){
System.out.println("吃鱼");
}
}
此时 我们 cat 猫类 继承了animal 动物类 这就是抽象类的一种具体化 动物 猫
然后上面写的eatSomething方法 是吃东西的行为 那猫吃鱼啊 所以我们猫类 实现eatSomething就输出吃鱼
然后我们 创建text测试类
text参考代码如下
public class text {
public static void main(String args[]) {
cat cat = new cat();
cat.eatSomething();
}
}
text 实例化了cat 猫类对象 调用了cat 类的eatSomething方法
运行结果如下
整个过程非常顺利
还有几个需要注意的
第一 抽象类是不能被实例化的 在其他类实例化抽象类 则直接报错 抽象类只能被继承 不能被实例化
第二 抽象类中除了抽象方法 也可以有普通方法
如图所见 抽象类中写普通方法 是不会有问题的 但抽象类还是尽可能放抽象方法 比较符合规范
第三 继承抽象类的类 必须重写实现抽象类中的所有抽象方法
可以看到 cat 类只要 去掉 eatSomething 方法 就会报错 因为他继承了animal抽象类 就必须重写animal中所有的抽象方法
第四 抽象类继承抽象类 就不需要重写父类的抽象方法