1、什么是抽象类
有时候,方法的功能无法确定如何实现,比如:计算图形、三角形、正方形、圆形、作为父类,面积方法的编写无法确定,所以有时候,有些方法的编写没有意义,想想是否可以省略掉方法体的编写,不就更加简洁了吗。
再例如:我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。所以说,动物本身并不是一个具体的事物,而是一个抽象的事物。只有真正的猫、狗才是具体的动物。同理,我们也可以推想,给动物添加一个吃的功能,那么,不同的动物吃的东西应该是不一样的,所以,我们不应该在动物类中给具体的体现,而是应该给出一个声明即可。
2、抽象类的编写格式
java中的方法,只编写方法的声明,没有方法体的编写,这样的方法称为抽象方法。
方法的编写格式:
权限 [static/native等等] 返回值类型 方法名([参数类型 参数名,参数类型 参数名,…]){
方法体
}
方法: 一段代码实现一定的功能.
public void eat(){ //方法的格式
System.out.println();
}
抽象类的编写格式:
权限 abstract 返回值类型 名 (参数列);
abstract:抽象的意思
抽象类特点
- 抽象方法的权限只能为public或protected.
- 抽象方法必须使用abstract修饰,表示当前方法为抽象方法.
- 抽象方法不能含有方法体.
- 抽象方法只能放在抽象类中.
编写DoMain类:
public abstract class DoMain {
public abstract void showA();
}
实现类1:
public class Demo01 extends DoMain{
@Override
public void showA() {
System.out.println("实现了抽象的功能....");
}
public static void main(String[] args) {
Demo01 d = new Demo01();
d.showA();
}
}
实例2:
public abstract class Demo02 extends DoMain{
//继承了抽象类,但我不想实现
}
实现2:
public class Demo03 extends Demo02{//继承Demo02,我这边实现使用
@Override
public void showA() {
System.out.println("实现具体………………");
}
public static void main(String[] args) {
DoMain d = new Demo03();// 转型二层
// 操作方法
d.showA();
}
}
3、抽象类问题
含有抽象方法的类,一定是抽象类? 抽象类一定含有抽象方法?
如果一个类中含有抽象方法,那么这个类必须为抽象类,抽象类中可以含有抽象方法和普通方法。