English 中文(简体)
拥有多种继承方法的类别
原标题:class holding multiple instances which inherits their methods

我对 Java来说很新,因此我可能使用不正确的术语。 我试图race诚地把一个班子延伸到一个新班级,这个班级有多个超级阶级。 例如,我有一个班子。

class Rose{
   String smell;
   Rose(String smell){this.smell=smell;}
   void sniff(){ println("smells "+smell);}
}

And I want to define a class like...

class Bouquet extends Rose{
   ArrayList<Rose> roses;
   ...
}

持多票。 我的实际守则有20种方法,其中多数是扩大的方法。

void sniff(){
   for( Rose one: roses) one.sniff();
}

是否有办法构建<代码>bouquet 这样,我就不需要明确地界定这些sil?? 我甚至可以选择一个新的超级班级,这样可以走下去。 但重要的是,我可以向外部书面方法发出<条码>>>>>><>条码<>,而不是<条码>。

EDIT: Haha, I think my flower metaphor was a big fail. :) But your input is good; you guys have clarified my thinking a bit.

在我的实际问题上,有一套行动,确定如何将基类的事例加到基类的新例子中。 也许较好的比喻会把一些小块织物混为一谈。 外部方法应完全照样处理ope和 st。

似乎像<代码>extends是错误的,还有其他建议?

最佳回答

你真心需要从 rose升中扩大布局。 只有当有国际投资协会关系时,你才延期,就像你有花.和 Rose花一样。 但布局不是一 rose。 理想的情况是,你应有一个布局班,很多人已经升。 如果存在1:N关系,那么,你就不得不自行处理个别项目。

问题回答

虽然我们可以对我们的愿望做任何事情,但你的班级设计在抽象方面没有什么缺陷。

是一份 rose升的集件,因此,斜体会延展,而是把它作为你可以调取的清单。 扩大后,也把它作为位于布基特的不动产,是毫无意义的。 相反,创设一个<条码>基本类别,称作<条码>,下限,然后设立<条码>,填满。

界定花门类内的散射功能,如果需要的话,则规定在衍生类别中<代码>overe。

It would be wrong.

如果Shamims没有介绍花班,我会投票回答,这不是你提问的合理假设。

ArrayList <Rose> bouquet;

或许你们都需要。 但你可以把布克特用作 Rose。 Bouquet.split();可以说得通,但Ross.split将是一个截然不同的事情。

<代码>is-a 问题给你一个粗略的想法,即继承是否合理。 它并非总是最后答案,但如果它不合适,它就没有。

奥凯说,如果我错了,那就纠正了我,但对于我来说,似乎很显然,真正的问题与流动者或增长无关,但提交人只是试图树立一个榜样。

在实际应用中,couldis-a 关系,问题有效。 例如,我在处理回话时不得不使用这一模式:你有一个<条码>MyCallback<> 代码>接口,有多个具体实施,并能够登记你有<条码>的多功能反馈。 有一个<代码>MyCallback的班次代表所有电话。 在每一种方法中,你都得到同样的选择。

我认为,你可以通过 Java动态代理这样做。 或者如果你甚至使用。 但我建议予以反对。 Justcept that this is a fact of life with Java and written the 20 methods and be made with it.

Without a lot of hacks, no, there is no easy way to do this. I d highly recommend reading about this. Basically, you only want to use inheritance to enforce an is-a relationship - what this means is that your subclass should be substitutable for your base class in all situations. The natural question is therefore, is a bouquet a rose, and the answer here is no, it is not, thus inheritance is not suitable for the job.

在所张贴答复的增编中,如果你用SerSmell(SerSmell)取代Sniff(Sniff)方法,那么你最好用你的方法命名。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签