Default constructors in Java

前端 未结 7 1719
南旧
南旧 2020-12-09 07:21

I know I\'m asking some serious 101 question here...

I have some class Foo and a class Bar that extends Foo. In Foo

相关标签:
7条回答
  • 2020-12-09 08:05

    So all nice and well, but how do I now get this to work without duplicating this constructor in every deriving class?

    You do need to duplicate the constructor signatures - if you want the subclass to have constructors with the same signatures. But you don't need to duplicate the code - you just chain to the superclass constructor:

    public Bar(int x, int y) {
        super(x, y);
        // Any subclass-specific code
    }
    

    Of course if you can work out the superclass parameters from a different set of parameters, that's fine. For example:

    public Bar(int x) {
        super(x, x * 2);
        // Any subclass-specific code
    }
    

    You really need to work out what information is required to construct a Bar - that should dictate your constructors.

    If this is a problem, it's possible that you're overusing inheritance. It's hard to say for sure without any idea of what your actual classes are, but you should look at using composition instead of inheritance. It's no panacea, but it can avoid this sort of thing.

    0 讨论(0)
提交回复
热议问题