2013-12-10 3 views
0

Я хочу, чтобы каждый dono, domin, doadd, docalc помещался соответственно в метод подклассов другого класса. Сейчас они находятся в методах одного и того же класса. Может ли кто-нибудь показать мне пример, как написать те в подклассах метода другого класса и как вызвать их в текущую условную инструкцию?Наследование и переопределение

Кроме того, если бы я должен был принимать эти условные утверждения вместе с каждым методом под подклассами, как я могу это сделать? Я знаю, что это потребует переопределения, но для меня это сложно сделать.

Спасибо.

public void Act(String activity) 
{ 


    if(length<2) 
    { 
     dono(activity); 
    } 
    else if(length==3) 
    { 
     domin(activity); 
    } 
    else if(length==4) 
    { 
     doadd(activity) 
    } 
    else if(length==5) 
    { 
     docalc(activity); 
    } 
    else 
    { 
     system.out.println("Invalid try again"); 
    } 
    out.println("\n"); 
} 

ответ

0

Похоже, у вас есть какие-то домашние задания в отношении наследования, которое хорошо, но если мы просто сказать вам ответ, вы не изучать точку. Понимание того, как Java (и большинство современных языков) является объектно-ориентированным, является очень важно узнать, как правильно кодировать.

Я немного упрощаю это, но думаю об этом так: любое существительное, о котором вы можете думать, может быть его собственным классом. «Класс» по сути своей является просто конструкцией, которую мы должны помочь нам организовать наш код, это всего лишь совокупность данных и вычислений по этим данным. Если бы у нас не было классов, наш код был бы невероятно тяжело писать, поскольку он становится все больше и больше и практически невозможно разделить между несколькими программистами одновременно.

Inheritance - это способ для нас «наследовать» информацию для класса из более общего класса. Например, допустим, у нас есть класс Car. Car имеет несколько полей данных, и, возможно, наша программа изначально разработана таким образом, что все наши данные полностью соответствуют этой форме. Итак, возможно, наш основной метод имеет множество заявлений, таких как Car car9 = new Car("blue", "Ford", 2005), классный. Но подождите - теперь приходит что-то, что не подходит точно в набор данных! Предположим, что это Mustang, и ему нужны данные для переменной под названием engine. Это не относится к классу Car, поэтому у нас есть три варианта: 1. Добавить engine в Car. Очевидно, это не идеально; многие из наших записей будут в конечном итоге не использовать это вообще, и мы можем столкнуться с нулевыми проблемами в будущем, если мы не будем осторожны. 2. Скопируйте Car, переименуйте его Mustang и добавьте дополнительные данные. Это решение действительно работает, но посмотрите на весь этот дублированный код! Каждый раз, когда мы меняем что-либо в любом классе, нам придется помнить, чтобы вернуться и изменить другого! 3. Наследование. Это то решение, которое мы хотим. Поскольку Mustang «is-a» Car, мы можем определить новый класс, который наследует его опциями из своего родителя, или это «суперкласс». Для этого мы используем ключевое слово extends: public class Mustang extends Car{. Теперь Mustang автоматически может использовать все, что Car просто сказал super().ATTRIBUTE_OR_METHOD. Кроме того, Mustang может определять свои собственные новые методы, новые атрибуты, и мы сможем создавать классы Mustang так же, как мы бы создали Автомобиль: Mustang m = new Mustang("blue", "Ford", 2013, "awesome engine 3000"). Мы получаем всю работу, которую мы вкладываем в класс Car, без необходимости дублировать код! Удивительно, правда?

В качестве примечания стороны Java имеет действительно классную концепцию под названием «полиморфизм», где, если вы расширяете класс, вы все равно можете использовать объявление своего суперкласса: Car m = new Mustang("blue", "Ford", 2013, "awesome engine 3000"). Это может быть очень полезно, поскольку вы понимаете полномочия и недостатки, связанные с наследованием.

Короче говоря: создайте суперкласс, который содержит ваши «обобщенные» методы и данные, затем используйте наследование с помощью ключевого слова extends, чтобы создать более конкретные ветви (называемые «подклассами») вашего суперкласса.

Смежные вопросы