gpt4 book ai didi

java - 实例化抽象类的子类

转载 作者:太空宇宙 更新时间:2023-11-04 07:40:48 28 4
gpt4 key购买 nike

我会直接进入它。下面是我在 AI 应用程序中实现的用于解决单词难题的 GeneralSearch 类的代码片段。我想知道如何在抽象类中实例化子类。我觉得我已经在 BreadthFirstSearch 类及其调用其 super 构造函数的构造函数中实现了所有相关的抽象方法。 (嵌套子类)

我知道您无法实例化抽象类,但根据之前的线程和信息,您可以使用抽象父类(super class)实例化子类。

我尝试以下调用但无济于事:

GeneralSearch bfs = new BreadthFirstSearch(now.getState(), info);//正确的参数

或者。

GeneralSearch bfs = GeneralSearch.BreadthFirstSearch(now.getState(), info);

收到的错误:1)BreadthFirstSearch无法解析为类型2)未定义 GeneralSearch 类型的方法 BreadthFirstSearch(WordState, WordNodeInfo)

我似乎无法获得子类的工作实例,因此我可以执行此类搜索。如果有人能阐明我的困惑和理解,那就太好了。 (代码如下)

  public abstract class GeneralSearch {

NodeInfo nodeInfo;
ArrayList unvisited, visited;

public GeneralSearch (State startState, NodeInfo nodeInfo) {
this.nodeInfo = nodeInfo;
unvisited = new ArrayList();
unvisited.add(new Node(startState, new Actions()));
visited = new ArrayList();
}

public Node search() {
Actions moves;
Action move;

//Iterating through arrayList for unvisited and possible arcs
Node visit, successor;

if(unvisited.isEmpty()) return null;
while( !unvisited.isEmpty() ) {
visit = select();
if(nodeInfo.isGoal(visit)) return visit;
moves = visit.getState().getActions();

Iterator<Action> it = moves.iterator();
while(it.hasNext()) {
successor = (Node) visit.clone();
move = it.next();
successor.getState().update(move);
insert(successor);
}
visited.add(visit);
}
return null;
}

public abstract Node select ();

public abstract void insert (Node node);


public class BreadthFirstSearch extends GeneralSearch {

public BreadthFirstSearch(State startState, NodeInfo nodeInfo) {
super(startState, nodeInfo);
}

public Node select() {
return (Node) visited.get(0);
}

public void insert(Node node) {
unvisited.add(node);
}
}

}

最佳答案

将 BreadthFirstSearch 类放在 GeneralSearch 类之外的单独文件中。

如果您想将其保留在那里,请尝试实例化 GeneralSearch.BreadthFirstSearch 而不仅仅是 BreadthFirstSearch,但我什至不确定是否可以在其自己的父类中拥有子类。

在第二次尝试中,您缺少一条新语句:

GeneralSearch bfs = new GeneralSearch.BreadthFirstSearch(now.getState(), info);

关于java - 实例化抽象类的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16099964/

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