gpt4 book ai didi

java - 实现某些子类而不是其他子类的目的?

转载 作者:搜寻专家 更新时间:2023-11-01 02:43:34 25 4
gpt4 key购买 nike

因此,我试图理解一个 Java 项目,其中有一个接口(interface),然后是一个具有子类 B、C 和 D 的类 A,每个子类都有各自数量的子类。

我注意到一些子类扩展了它们给定的父类(super class)并实现了接口(interface),而其他的只是扩展了它们的父类(super class)。此外,例如 B 类的一些子类将声明一个方法,该方法也在 B 类和 A 类中声明,并在接口(interface)中使用。

我的问题是 - 在次级子类中实现接口(interface)的目的是什么,如果扩展它们允许它们继承其父类(super class)的属性并因此无论如何实现接口(interface)?

我知道我的逻辑一定是有缺陷的,而且一定是有原因的,因为一些次级子类实现了接口(interface),而另一些则没有。

这是一个实现 Idump 的示例,而其他示例也包含未实现 Idump 的 dumpProperties 方法。 :

public class Q extends B implements Idump {
public void dumpProperties(StringBuffer buf)
{
String appearance = "1";
String dumpValue = "Sizable";

buf.append("\t\t\t//\n");
buf.append("\t\t\t// " + name + "\n");
buf.append("\t\t\t//\n");
buf.append("\t\t\tthis." + (owner != null ? name + "." : "") + "Name = \"" + name + "\";\n");
}


public class B extends A implements Idump {
public void dumpProperties(StringBuffer buf)
{
super.dumpProperties(buf);
for(Control control : controls)
{
control.dumpProperties(buf);
}
}
}


public class A implements Idump{
public void dumpProperties(StringBuffer buf)
{
buf.append("\t\t\t//\n");
buf.append("\t\t\t// " + name + "\n");
buf.append("\t\t\t//\n");
buf.append("\t\t\tthis." + (owner != null ? name + "." : "") + "Name = \"" + name + "\";\n");
for(Property prop : properties)
{
prop.dump(buf);
}

if(left != -1 && top != -1 )
{
buf.append("\t\t\tthis." + name + ".Location = new System.Drawing.Point(" + left + "," + top + ");\n");
}
if(width != -1 && height != -1 )
{
buf.append("\t\t\tthis." + name + ".Size = new System.Drawing.Size(" + width + "," + height + ");\n");
}

for(Property prop : properties)
{
prop.dumpProperties(buf);
}
}
}

非常感谢任何帮助!

最佳答案

如果子类没有明确包含一个实现,那么它将从它的父类继承一个实现;请注意,这意味着其他子类(明确实现它)正在覆盖父类的实现(这称为 Polymorphism )。

同样,每个子类都将继承其父类(super class)实现的接口(interface)(无论它们是否也被标记为实现该接口(interface));这是一种风格和可读性的决定。

关于java - 实现某些子类而不是其他子类的目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969634/

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