Java 初学者:尝试让一个具有接口的类扩展另一个类

Java 初学者:尝试让一个具有接口的类扩展另一个类,java,Java,我有两个类,我想让我的第二个类访问第一个类的私有数据 通常我会: public class GenericDictionary<T> implements GenericDictionary_interface<T> { public class Iterator<T> extends GenericDictionary<T> { 公共类GenericDictionary实现GenericDictionary\u接口{ 公共类迭代器扩展了Gen

我有两个类,我想让我的第二个类访问第一个类的私有数据

通常我会:

public class GenericDictionary<T> implements GenericDictionary_interface<T> {

public class Iterator<T> extends GenericDictionary<T> {
公共类GenericDictionary实现GenericDictionary\u接口{
公共类迭代器扩展了GenericDictionary{
但我有一个界面,我不知道它们是如何工作的,有时它们似乎不是必需的

public class Iterator<T> implements Iterator_interface<T> {
公共类迭代器实现迭代器接口{
我如何扩展另一个类并拥有一个接口?该接口是否不需要?我的
迭代器
类的接口是否应该在super的接口中?如果是这样…如何

p.S.请不要教我为什么要做我正在做的事情(也就是说,制作我自己的东西,而不是使用java.util.*中的东西)

编辑:尽管我决定使用内部类,但我的问题的答案是扩展和实现的顺序,谢谢

如何扩展另一个类并拥有一个接口

首先放置
扩展
,然后
实现

public class Iterator<T>
    extends GenericDictionary<T>
    implements Iterator_interface<T>
{
(见附件。)

如何扩展另一个类并拥有一个接口

首先放置
扩展
,然后
实现

public class Iterator<T>
    extends GenericDictionary<T>
    implements Iterator_interface<T>
{

(请参见。)

如何扩展另一个类并拥有一个接口?
如果您的意思是,一个类在实现接口时如何扩展另一个类

   public class Iterator<T> extends anotherClass implements Iterator_interface<T> {
公共类迭代器扩展另一个类实现迭代器接口{

当您有两个或多个具有相同行为但行为略有不同的类时,请使用接口。

我如何扩展另一个类并拥有一个接口?
如果您的意思是,一个类如何在实现接口时扩展另一个类

   public class Iterator<T> extends anotherClass implements Iterator_interface<T> {
公共类迭代器扩展另一个类实现迭代器接口{

当您有两个或多个具有相同行为但行为略有不同的类时,请使用接口。

如果您希望另一个类访问第一个类的私有数据,可以将其设置为内部类。它将能够访问外部类的私有成员。 继承就是要反映编程世界和应用程序中的真实问题
Iterator extends GenericDictionary
不是通常所做的。对于接口,它们的限制最小,可以在任何地方使用。

如果希望另一个类访问第一个类的私有数据,可以将其设为内部类。它将能够访问外部类的私有成员。 继承就是要反映编程世界和应用程序中的真实问题
迭代器扩展GenericDictionary
不是通常的做法。对于接口,它们的限制最小,可以在任何地方使用。

正如我在前面的问题中告诉过你的那样:迭代器不应该扩展GenericDictionary。两者之间没有is-a关联。你正在滥用继承。如果你想访问priva从迭代器中删除词典的成员,像标准JDK类那样将其作为一个内部类来实现。@JBNizet,正如我可能已经提到的那样……我不知道如何实现。JDK对我来说太密集了。你的评论没有什么帮助。我明白这可能不好,但我需要,例如:
.capacity()
。没有它我无法继续。因为我的第一个类已经存在……我唯一的选择是将它作为参数传递,但这似乎不直观,或者至少是错误的。你知道什么是内部类吗?如果不知道,请在谷歌上搜索“Java教程内部类”,您将找到一个教程。正如我已经告诉您的:在IDE中突出显示HashMap并选择“查看源代码”。然后转到
迭代器()
method definition,您将找到一个示例实现。将字典作为参数传递给迭代器的构造函数是一个比您的解决方案好得多的解决方案,事实上这是内部类隐式执行的操作。因此,如果您不想使用内部类,可以这样做。@jbnize请看,这有点帮助,尽管非常感谢。不过,我至少要感谢您花时间发布。正如我在前面的问题中告诉过您的那样:迭代器不应该扩展GenericDictionary。两者之间没有关联。您滥用了继承。如果您想从迭代器访问字典的私有成员,请将其实现为内部类,即这是标准的JDK类所做的。@JBNizet,正如我可能已经提到的那样……我不知道如何做。JDK对我来说太密集了。你的评论对我帮助不大。我知道这可能不好,但我需要,例如:
.capacity()
。没有它我无法继续。因为我的第一个类已经存在……我唯一的选择是将它作为参数传递,但这似乎不直观,或者至少是错误的。你知道什么是内部类吗?如果不知道,请在谷歌上搜索“Java教程内部类”,您将找到一个教程。正如我已经告诉您的:在IDE中突出显示HashMap并选择“查看源代码”。然后转到
迭代器()
method definition,您将找到一个示例实现。将字典作为参数传递给迭代器的构造函数是一个比您的解决方案好得多的解决方案,事实上这是内部类隐式执行的操作。因此,如果您不想使用内部类,可以这样做。@jbnize请看,这有点帮助,尽管非常感谢。不过我至少要感谢你花时间来发帖。我知道这不正常,但是我不知道现在在学习内部课程。谢谢!我知道这不正常,但是我不知道现在在学习内部课程。谢谢!