原文来源于:程序员恰恰
如有侵权,联系删除
摘要:抽象是Java语言一个很重要的特性,可以通过两种方式来体现,其中一种方式就是抽象类。在Java类中,如果一个类没有包含足够的信息来描绘一个具体的对象,那么这样的类就是抽象类。本文根据对Java面向对象的学习理解,浅谈了抽象类定义及使用,然后给出一个代码案例来说明,最后做出总结。
关键词:Java;抽象类;继承;实现;
Java允许类或者成员方法具有抽象属性。如果在定义类的修饰词列表中包含有关键词abstract,那么则该类具有抽象属性。本文根据笔者对Java类和抽象类的理解浅谈了抽象类的定义及使用,试图给Java初学者提供一些借鉴与参考。
一、问题需求
首先我们来讲一下Java中为什么要定义抽象类呢。我们的程序员在刚开始写程序的时候定义了一个类,但可能考虑不到这个类的方法该如何去实现。就比如在编写王者荣耀的时候,程序员定义了一个英雄类,这个英雄有三个技能,但程序员一时想不到这三个技能将来要改编写成什么样,像这种情况怎么办呢,程序员就可以定义一个抽象类,不具体的去实现这三个技能的方法。等设计师设计出技能的具体样式后,再由其他程序员用子类去实现这三个技能的具体方法。
抽象类一般由架构师给出,架构师在定义一个框架的时候,没有那么多的时间与精力去具体实现里面的每一个方法,因此就可以定义抽象的方法让其他程序员用子类去实现。
二、抽象类的定义格式
2.1抽象方法的定义
简单来说抽象类就是用关键词abstract修饰的类,抽象类包含有抽象方法。其定义格式为:
abstract class 抽象类名
{
abstract 返回类型 抽象方法名 ();//抽象方法
返回类型 方法名 (){ 语句体 };//普通方法
}
2.1实现抽象类中的方法
class 类名 extends 抽象类名
{
返回类型 抽象方法名 (){ 语句体 };//具体实现的抽象方法
}
三、示例代码
public class xqy {
public static void main(String[] args) {
zlm2 sx=new zlm2();
sx.jn();
sx.js();
}
}
abstract class bizhe{
abstract void jn();
abstract void js();
}
abstract class zlm1 extends bizhe{
void jn(){
System.out.println("实现抽象方法1");
}
}
class zlm2 extends zlm1{
void js(){
System.out.println("实现抽象方法2");
}
}
四、总结
综上所述我们可以看出抽象类可以包含抽象方法,也可包含普通方法。但它和普通类还是有区别的:
1、抽象类的修饰符必须为public或者protected, 不能是private, 因为抽象类需要其子类去实现抽象方法,private修饰就不能被子类继承,因此子类就不能实现改方法。
2、抽象类不能直接实例化,需要通过普通子类进行实例化。
3、 如果子类只实现了抽象父类中的一些方法,那么该子类任然是抽象类(不能被实例化)。