如何从java中的另一个类创建更少的特定类

时间:2016-04-28 13:21:24

标签: java design-patterns

我有一个模特:

class A {
    int a;
    int b;
    int c;
} 

我想创建一个新类,如:

class B {
    int a;
    int b;
} 

我不想重写B类中的所有属性,这些属性已经写在A.如何使用A创建B.
我们可以使用 extends 为课程添加额外的功能,但是我们如何创建更少的特定类?这有什么模式吗? A类或B类应该如何设计为更具多态性?

(我想使用B类插入数据库,模型类和数据库表应该相同)

3 个答案:

答案 0 :(得分:0)

不确定您是否能够更改类/实现,但似乎有多种解决方案。第一个是让课程A扩展课程B

public class B {
    int a;
    int b;
}

public class A extends B {
    int c;
}

但这并没有回答你的核心问题(创建较少的特定类)。

创建一个不太具体的类(或者至少是模仿它的东西)可以通过接口和getter / setter来完成,例如:

public class Implementation implements A,B {
    private int a;
    private int b;
    private int c;

    public int getA(){return a;}
    public int getB(){return b;}
    public int getC(){return c;}

    ...
}

public interface A {
   int getA();
   int getB();
   int getC();
}

public interface B {
   int getA();
   int getB();
}

答案 1 :(得分:0)

应该有一个" IS A"父类和派生类之间的关系。

即。派生类(B)也应该是它的父类(A)的实例。

如果你从B中移除某些东西,它就不再是A了。 因此,这是不可能的。

答案 2 :(得分:-3)

我猜你需要像合成这样的设计技巧。

说明:如果您想在课程B中使用课程A,则可以在课程B b = new B();中使用A!这是作文。 您也可以实现接口而不是为您提供多重继承的类。 这里的语法: class A implements interface1, interface2