java为什么单继承