Ребята, прежде чем вы начнете голосовать, пожалуйста, прочитайте этот вопрос, и, пожалуйста, поймите, что я не пытаюсь начинать что-либо неприятное здесь.Несколько Наследование
Единственная причина этого вопроса в том, что я все больше и больше осознаю, что для того, чтобы быть более трудоспособным, мне нужно знать Java или/или C#.
Ok вот вопрос:
Я знаю, что множественное наследование запрещено в J и C#. Но если я что-то вроде этого (потому что я хотел бы иметь класс, который наследуется от двух классов В и А):
//code in Java
public class B
{
public void methodFromB()
{
}
}
public class A extends B
{
public void methodFromA()
{
}
}
public class C extends A
{
public void methodFromC()
{
}
}
Так ведь, насколько я понимаю, я наследовать от них обоих (A и B и да, я понимаю, что официальное объяснение этого заключается в том, что объект A является специализированным B, но тем не менее, если я хочу это сделать, я просто, но он просто не выглядит красивым)
Но вместо этого Чтобы сделать это в одном объявлении, я должен сначала создать один класс, наследуемый от другого класса, а затем извлечь из него?
Смешная вещь. Объявив эти классы, как указано выше (в NetBeans), я вижу, что после создания экземпляра класса C (в основном) я не могу вызывать метод methodFromC, который является методом, определенным в этом классе.
В чем причина этого?
Спасибо.
Можете ли вы опубликовать образец кода, который вы пытаетесь сделать в «Объявив эти классы, как указано выше (в NetBeans), я вижу, что после создания объекта класса C (в основном) я не могу вызвать методFromC»? – Bruno
Это не пример множественного наследования, это просто обычное наследование, как это делали боги. Множественное наследование, которое java пустоты - это то место, где у вас есть классы Ba и Bb, которые оба реализуют A, а затем класс C, который реализует как Ba, так и Bb, что приводит к структуре в форме алмаза. Путаница устанавливает, когда Ba и Bb переопределяют общедоступный метод m(), который затем вызывает C. Поскольку никогда не определено, какую реализацию m() вызывается, результаты могут быть неожиданными. Вот почему был сделан выбор дизайна только для реализации одного типа. – mikek
Я бы не сказал, что это запрещено * в Java и C#, он просто не реализован на этих языках (по причинам, которые mikek заявляет) – Kris