栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

轻松理解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 fruitList = new ArrayList();
        //创建三个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关键字。注意,抽象父类可以通过子类来建立对象。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880260.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号