abstract 抽象的

    1.可以修饰什么?
    修饰方法
    用abstract修饰符修饰的方法 只有方法的结构 没有方法执行体就叫做抽象方法
    注意区分native修饰的方法 虽然也没有方法体 但是不是抽象方法 只是执行的过程是其他语言写的 我们看不见
    修饰类
    用abstract修饰符修饰的类 叫做抽象类

    2.有什么特点?
    抽象类中不是必须有抽象类
    抽象方法目前是必须放在抽象类中(或接口中) 普通类不允许含有抽象方法

    3.什么是抽象类 抽象类有什么特点?(通常是用来描述事物的 还不是很具体)
    抽象类里面有什么成员?(抽象类特殊在 允许含有抽象方法 其余和正常的类都一样)
    属性 可以含有一般的属性 也可以含有public static final等等修饰符
    方法 可以含有一般方法 也可以含有private static final等等修饰符
    注意:抽象类允许有抽象方法 抽象方法只有方法结构 没有方法执行体
    且抽象方法不能被private static final修饰
    可以理解为抽象方法是要留给子类去实现的
    private修饰子类无法找到
    final修饰子类无法重写
    static修饰的方法是属于当前类的 可以被类及其对象调用
    但是abstract修饰的方法没有方法体 不能被直接调用 需要子类重写才能使用
    所以二者是矛盾的
    块 可以含有一般的程序快 也可以含有static程序块
    构造方法 可以含有构造方法 包括重载

    类如何使用 能不能创建对象
    抽象类含有构造方法 但是我们不能通过调用构造方法直接创建对象
    抽象类只能通过子类单继承来做事
    构造方法是留给子类创建对象时间接调用的

    为什么不能调用构造方法呢?
    因为抽象类是存在抽象方法的,如果让抽象类创建对象,那么使用抽象的对象调用抽象方法是没有任何意义的
    为什么不能调用构造方法还要提供呢?
    抽象类构造方法是为了提供子类创建对象的时候初始化父类的成员的

    4.类和类的关系
    抽象类—- 可以直接单继承——抽象类
    抽象类—- 可以直接单继承——具体类 (写法上可以 用法上通常不会这么用)
    具体类—- 不可以直接单继承——抽象类 (需将父类的抽象方法具体化 或者 子类也变为抽象类)