абстракция в Java-программе - PullRequest
0 голосов
/ 07 октября 2018

Почему вывод как ниже?

велосипед создан

работает безопасно ..

передача изменена

, потому что мы нигде не вызываем метод Bike().

abstract class Bike {
    Bike() {
        System.out.println("bike is created");
    }

    abstract void run();

    void changeGear() {
        System.out.println("gear changed");
    }
}

//Creating a Child class which inherits Abstract class  
class Honda extends Bike {
    void run() {
        System.out.println("running safely..");
    }
}

//Creating a Test class which calls abstract and non-abstract methods  
class TestAbstraction2 {
    public static void main(String args[]) {
        Bike obj = new Honda();
        obj.run();
        obj.changeGear();
    }
}

Ответы [ 3 ]

0 голосов
/ 07 октября 2018

В классе Bike у вас есть конструктор Bike (), который печатает оператор.Поэтому по умолчанию дочерний класс строится на конструкторе своего родительского класса.Вот почему, когда вы создаете объект класса Bike, должен появиться оператор print.

0 голосов
/ 07 октября 2018

вы создали класс Honda с конструктором по умолчанию (без каких-либо формальных аргументов), поэтому всякий раз, когда вы создадите объект класса Honda, он будет вызывать конструктор по умолчанию (Honda ()), а этот конструктор будет вызывать родительский класс (Bike) по умолчанию.Конструктор и родительский класс конструктор выведет оператор "велосипед создан".

0 голосов
/ 07 октября 2018

Класс Honda создается с помощью Конструктор по умолчанию

Если класс не содержит объявлений конструктора, то неявно объявляется конструктор по умолчанию без формальных параметров и условия throws.

 public class Point {
      int x, y;
 }

эквивалентно объявлению:

public class Point {
      int x, y;
      public Point() { super(); }
 }

Так Bike() вызывается при каждом вызове new Honda();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...