ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

JAVA-抽象

2019-10-09 17:05:19  阅读:220  来源: 互联网

标签:java abstraction interface abstract-class data-hiding


我对Java中的抽象感到困惑.

我检查了许多页面,指出抽象是数据隐藏(隐藏实现).

我对抽象的理解是“部分实现”.只需在抽象类/接口中定义所需的内容,然后扩展/实现它们并添加您自己的功能即可.

我不明白这是如何隐藏数据的?实现类/接口后,您将可以访问代码,并将根据需要对其进行修改.

我已经检查了很多问题,关于此的文章,但对此仍然感到困惑.

任何帮助表示赞赏.
谢谢.

解决方法:

也许有一个例子可以帮助您更好.假设您要实现一个Graph类,它可能具有邻接表或邻接矩阵来表示其节点.因此,抽象地,您至少要对该图“ addNode”“ addEdge”:

public abstract class Graph
{
    public abstract int addNode();
    public abstract void addEdge(int from, int to);
}

现在您可以扩展两个类:

public class GraphAdjList extends Graph
{
    private Map<Integer,ArrayList<Integer>> adjListsMap;
    public int addNode()
    {
        //list based implementation 
    }
    public void addEdge(int from, int to)
    {
        //list based implementation
    }
}

public class GraphAdjMatrix extends Graph
{
    private int[][] adjMatrix;
    public int addNode()
    {
        //matrix based implementation 
    }
    public void addEdge(int from, int to)
    {
        //matrix based implementation
    }
}

当您从这两个类中调用addEdge中的任何一个时,您不必担心其背后的数据结构,您只知道可以得到所需的结果,例如:

Graph g1,g2;
g1 = new GraphAdjList();
g2 = new GraphAdjMatrix();

g1.addEdge(1,2);
g2.addEdge(1,2);

通过多态,您调用了两个不同的函数,但得到的结果与Graph的客户端相同.

现实生活中的另一个例子是汽车制动器.作为汽车客户,制造商会在不知道后端制动器的实现方式的情况下为您提供踩踏板的机会.背面可以是鼓式制动器或盘式制动器.您只需要踩刹车!

标签:java,abstraction,interface,abstract-class,data-hiding
来源: https://codeday.me/bug/20191009/1880497.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有