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();
​
    }
}
posted @ 2021-12-11 21:56  欧朋  阅读(134)  评论(0)    收藏  举报