Если у меня есть класс:
class A { public A() { } }
и еще
class B extends A { public B() { } }
есть ли способ заставить B.B() не звонить A.A()?
B.B()
A.A()
Я думаю, что единственный способ сделать это - испортить байт-код. Я не уверен, что Classloader или JVM проверяет, вызывается ли super(), но, как писал Божо, вы, вероятно, при этом получите несовместимые объекты.
super()
Каждый суперкласс нуждается в построении , и нет другого способа, кроме вызова конструктора.
Нет, и если бы вы могли, ваш производный объект действительно не был бы тем объектом, из которого он производился, не так ли? Это принцип будет нарушен. Так что если вам это действительно нужно, то полиморфизм - это не то, что вам нужно.