我有一个模特:
class A {
int a;
int b;
int c;
}
我想创建一个新类,如:
class B {
int a;
int b;
}
我不想重写B类中的所有属性,这些属性已经写在A.如何使用A创建B.
我们可以使用 extends 为课程添加额外的功能,但是我们如何创建更少的特定类?这有什么模式吗? A类或B类应该如何设计为更具多态性?
(我想使用B类插入数据库,模型类和数据库表应该相同)
答案 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