Java学习笔记71——抽象类概述
抽象的表述:
我们之前所说的猫,狗,猪,羊驼,熊猫等等都是动物的具体的例子,而动物本身是一个抽象的 概念,而我们之前是将动物写成了一个类,而类又可以创建对象,但是呢,实际上抽象的东西本身应该不能 实例化,并且动物这个概念中吃的方法,以及动物共有的方法本身也是一个不具体的方法, 我们在今天之后,把一个不具体的功能,叫做抽象方法,而如果说一个类中包含有抽象方法的时候, 这个类叫做抽象类。
抽象类的特点:
1、抽象类和抽象方法要用abstract关键字修饰
修饰类 放在class前面 举例: abstract class Animal3{} 修饰方法 放在访问权限修饰符的后面 举例: public abstract void eat();
2、有抽象方法的一定是抽象类,抽象类不一定有抽象方法,具体的类中不能有抽象方法
3、抽象类不能被实例化
既然不能被实例化,那写在抽象类中具体的方法怎么去调用呢? 抽象类如果创建呢?
4、如果继承抽象类是一个具体的类,要重写抽象类所有的抽象方法,如果是一个抽象类继承抽象类, 不需要重写抽象类中的方法
//定义了一个抽象类,叫Animal3
abstract class Animal3{
//注意:
// 抽象方法没有方法体{},连大括号都没有,直接以分号结尾
//Error:(26, 26) java: 抽象方法不能有主体
// public abstract void eat(){};
public abstract void eat();
public void fun(){
System.out.println("这是抽象类中的具体实现的fun方法");//抽象类例既可有抽象方法也可有非抽象方法
}
}
class Dog3 extends Animal3{
@Override
public void eat() {
System.out.println("狗吃肉");
}
//Error:(37, 1) java: com.shujia.wyh.day16.Dog3不是抽象的, 并且未覆盖com.shujia.wyh.day16.Dog3中的抽象方法show()
// public abstract void show();
}
abstract class Demo2 extends Animal3{
}
public class AbstractDemo1 {
public static void main(String[] args) {
//Error:(46, 21) java: com.shujia.wyh.day16.Animal3是抽象的; 无法实例化
//Animal3 a = new Animal3();//抽象类不能创建对象
//使用抽象多态的形式创建
Animal3 a = new Dog3();
a.eat();
a.fun();
}
}

浙公网安备 33010602011771号