Java抽象类详解:定义、用法、构造器与总结

张开发
2026/4/15 20:28:35 15 分钟阅读

分享文章

Java抽象类详解:定义、用法、构造器与总结
文章目录一、什么是抽象类二、抽象类的用法2.1如果一个类中有抽象方法那么这个类一定是抽象类2.2抽象类不能进行实例化2.3如果一个普通类继承了这个抽象类那么普通类必须重写抽象类当中的抽象方法2.4 抽象类的构造器三、总结一、什么是抽象类在 Java 中抽象类是用 abstract 关键字修饰的类。它不能被实例化即不能直接 new 出对象主要用于被其他类继承作为多个子类的通用模板。二、抽象类的用法2.1如果一个类中有抽象方法那么这个类一定是抽象类抽象类和普通类的区别在于抽象类中可以包含抽象方法示例普通类里面含有抽象方法编译器会报错正确写法:抽象方法可以没有具体的实现publicabstractclassShape{publicabstractvoiddraw();}2.2抽象类不能进行实例化2.3如果一个普通类继承了这个抽象类那么普通类必须重写抽象类当中的抽象方法示例Cycle类继承了Shape类必须重写Shape类中的抽象方法draw()publicclassCycleextendsShape{Overridepublicvoiddraw(){System.out.println(画一个圆圈);}}从这里可以看出抽象类的出现就是为了被继承相当于多一层编译器的校验2.4 抽象类的构造器抽象类的构造器,虽然不能直接 new 抽象类()但抽象类可以被普通类继承。当子类被实例化时子类构造器的第一行会隐式或显式地调用父类抽象类的构造器目的是初始化抽象类中定义的成员变量。// 抽象类publicabstractclassAnimal{protectedStringname;// 抽象类的构造器publicAnimal(Stringname){this.namename;System.out.println(Animal 构造器被调用name name);}publicabstractvoidsound();}// 子类publicclassDogextendsAnimal{publicDog(Stringname){super(name);// 这里显式调用抽象类的构造器}Overridepublicvoidsound(){System.out.println(name汪汪叫);}}// 测试publicclassTest{publicstaticvoidmain(String[]args){DogdognewDog(小黑);// 输出Animal 构造器被调用name 小黑dog.sound();// 输出小黑汪汪叫}}打印结果如下三、总结特性抽象类普通类是否可用new实例化❌✅是否可包含抽象方法✅❌是否可以有构造器✅供子类调用✅是否可被继承✅✅能否包含final关键字修饰❌abstract与final互斥✅主要用途作为模板定义规范描述具体对象

更多文章