1

インタビューで私に尋ねられたので、これはこの質問をするのに適切な場所ではないかもしれませんが、私はその背後にあるおっとの概念を理解したいと思います。

2つの基本クラスと派生クラスがあります。

    class Car {}

    class Paint {}

    class Colors : Paint {}

したがって、問題は、Paintを異なる基本クラスとして、ColorsをPaintクラスのサブクラスとして持つことの背後にあるオブジェクト指向の概念は何であるかということでした。

私の混乱は、Paintは基本クラスであり、Carクラスのプロパティではないということです。ここでは、OOPの概念が適用されます。

4

3 に答える 3

4

概念は、概念がない人もいるということです。まず、「色」とは何ですか (クラスに複数の名前を付けないでください)。Paint のどの動作が Colors に継承されますか? 私が見る限り何もありません。Colors が何をするべきなのか、私にはわかりません。

色はペイントと同じ意味で使用できますか? 私が想像できるわけではありません。すぐに、貧弱なクラス階層のように見えます。

私見、質問は完全に偽物です。

于 2012-05-16T16:58:40.123 に答える
3

何らかの理由で、次のように説明されたと思います。

CarクラスとPaintクラスがあり、そのPaintクラスは によってサブクラス化されていColorsます。」

それを説明した人は、文字通り という名前の単一のクラスを意味していなかったと思いColorsます。私はそれがもっと似ていると想像します:

    public class Car
    {
    }

    public abstract class Paint
    {
        public abstract void PaintCar(Car car);
    }

    public class BluePaint : Paint
    {
        public override void PaintCar(Car car)
        {
            // apply blue paint to the car
        }
    }

    public class MatteRedPaint : Paint
    {
        public override void PaintCar(Car car)
        {
            // apply red paint to the car
            // use matte finish
        }
    }

それ自体は理想的ではありませんが、あなたの質問が示唆するものよりもはるかにもっともらしいです。

于 2012-11-24T23:17:16.683 に答える
0

彼らはキーワード「継承」を探しているようです。

色はペイントを継承していますよね?

Paint が Color から継承された方が理にかなっていますが。

これはおそらく、あなたとの OOP ディスカッションを求める自由回答式の質問の 1 つです。

また、Car Paint ではなくHAS-ACar IS-APaint である場合、それはおそらく、戦略デザイン パターンを探している可能性があります。つまり、継承よりも合成を優先します。しかし、その例は、実際には意味をなさないので、それを少し推し進めています。

そして、彼らが最後に探していたのは、多重継承が悪いと考える理由に関する議論です。あなたはそれが悪いと思いますよね?:)

于 2012-05-16T17:47:24.420 に答える