gpt4 book ai didi

JAVA——抽象

转载 作者:行者123 更新时间:2023-11-29 09:59:56 28 4
gpt4 key购买 nike

我对 java 中的抽象有点困惑。

我查了很多页面说抽象就是数据隐藏(隐藏实现)。

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

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

我查了很多问题,关于这个的文章,但仍然对此感到困惑。

感谢任何帮助。谢谢。

最佳答案

也许一个示例可以更好地帮助您。假设你想实现一个 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——抽象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37131123/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com