Java中的抽象类

  • 抽象类
    抽象类无法实例化、无法创建对象
    1、例图:
    在这里插入图片描述
    2、什么是抽象类?
    类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类。类本身是不存在的,所以抽象类无法创建对象(无法实例化)。
    3、抽象类属于什么类型?
    抽象类也属于引用数据类型
    4、抽象类怎么定义?
    语法:
[修饰符列表] abstract class 类名{
            类体;
        }
  • 抽象类是无法实例化的,无法创建对象的,所以抽象类是用来被子类继承的。
  • final和abstract不能联合使用,这两个关键字是对立的。
  • 抽象类的子类可以是抽象类。抽象类虽然无法实例化,但是抽象类有构造方法,这个构造方法是供子类使用的。
  • 抽象类关联到一个概念:抽象方法。什么是抽象方法呢?
    1、抽象方法表示没有实现的方法,没有方法体的方法。
    例如:public abstract void dosome ();
    2、抽象方法特点是:
    特点1:没有方法体,以分号结尾
    特点2:前面修饰符列表中有abstract关键字
    3、抽象类中不一定有抽象方法,抽象方法必须出现在抽象类中。
  • 重要结论:
    1、一个非抽象的类继承抽象类,必须将抽象类中的抽象方法实现了。(将从父类中继承过来的抽象方法进行覆盖/重写,或者也可以叫做“实现"。)
    2、代码例子:
package com.zyh.abstractTest;

abstract class Animal {
    public abstract void move();
}
package com.zyh.abstractTest;

class Bird extends Animal{
    public void move(){
        System.out.println("flying");
    }
}
package com.zyh.abstractTest;

public class Test {
    public static void main(String[] args) {
        Animal a = new Bird();//向上转型
        //这就是面向抽象编程.
        // 以后你都是调用的a.xxxx,a的类型是Animal;
        // Animal是抽象的,面向抽象编程,不要面向具体编程;
        // 降低程序的耦合度,提高程序的扩展力;
        // 这种编程思想符合0CP原则.
        a.move();
    }
}
  • 判断题:Java语言中凡是没有方法体的方法都是抽象方法
    (错误)
    object类中就有很多方法都没有方法体,都是以";"结尾的,但他们都不是抽象方法,例如:public native int hashcode();这个方法底层调用了c++写的动态链接库程序。前面修饰符列表中没有: abstract。有一个native。表示调用JVM本地程序。
原文地址:https://www.cnblogs.com/yu011/p/12632714.html