轻松理解Java抽象类(Abstract Class)

一、什么是抽象类:

抽象(Abstract)是Java面对对象编程(OOP)中很重要的一个概念。在继承关系中,有时父类从逻辑上自己本身不能被实例化(下面会有例子),就可以创建个抽象父类。部分教材将抽象和封装、继承、多态一起定义为OOP的四大特征。

二、为什么要用抽象类:

正如上述所说,有时候有些父类自己本身不能被实例化的时候就可以建立抽象类。举个例子,我们有一个水果(Fruit)的父类;父类里有香蕉(Banana),芒果(Mango),和桃子(Peach)三个子类。

我们会发现,在世界上找不到一个仅仅名为“水果”的水果,水果仅仅是一个具体水果集合的概念,因此是不能被实例化的。对于这种自己不能被实例化的类,为避免Fruit被错误实例化,我们就可以创建一个抽象类来理论化实现,这样Fuirt便不能通过自身创建实例化对象。下面我们来演示如何创建抽象类。

三、抽象类代码实践:

以下就是我们创建的水果的抽象类,创建抽象的关键就是在访问修饰符public后面加上abstract关键字;另外有桃子,香蕉,和芒果三个子类继承这个类。

package Com.JoeBlog;
public abstract class Fruit {
    public String name;
    Fruit(String name){
        this.name = name;
    }
    public void peel(){
        System.out.println("剥皮");
    };
}

这样创建好后,我们尝试在测试类main方法里创建实例时就会出现错误提示(抽象类无法实例化):

package Com.JoeBlog;
public class Main {
    public static void main(String[] args) {
        Fruit fruit = new Fruit();
    }
}


输出错误:
:4:23
java: Com.JoeBlog.Fruit是抽象的; 无法实例化

需要注意的是,虽然抽象类自身不能实现实例化。但是,抽象类可以通过子类来创建对象。一下是我们建立一个Fruit抽象类的ArrayList的例子。

package Com.JoeBlog;

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<Fruit> fruitList = new ArrayList<Fruit>();
        //创建三个Fruit 对象,注意:必须通过子类实现
        Fruit mango = new Mango("Mango");
        Fruit peach = new Peach("Peach");
        Fruit banana = new Banana("Banana");

        fruitList.add(mango);
        fruitList.add(peach);
        fruitList.add(banana);
        //输出三个Fruit对象
        for (Fruit x : fruitList) {
            System.out.println(x.name);
        }
    }
}

总结

总的来说,抽象(Abstract)是Java面对对象编程(OOP)中很重要的一个概念,主要针对有时父类从逻辑上自己本身不能被实例化的情况,就可以创建个抽象父类。创建方式为在访问修饰符后面添加abstract关键字。注意,抽象父类可以通过子类来建立对象。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值