Рубрики

Вывод программы Java | Набор 4

Прогнозировать вывод следующих программ Java:

Вопрос 1

// имя файла: Main.java

  

class Base {

    protected void foo() {}

class Derived extends Base {

    void foo() {}

public class Main {

    public static void main(String args[]) {

        Derived d = new Derived();

        d.foo();

    }

}

Вывод: ошибка компилятора
Функция foo () защищена в базе и по умолчанию в производной. Доступ по умолчанию более ограничен. Когда производный класс переопределяет функцию базового класса, более ограниченный доступ не может быть предоставлен переопределенной функции . Если мы сделаем foo () публичной, то программа будет работать без ошибок. Поведение в C ++ отличается. C ++ позволяет предоставить более ограниченный доступ к методам производного класса.

вопрос 2

// имя файла: Main.java

  

class Complex {

    private double re, im;    

    public String toString() {

        return "(" + re + " + " + im + "i)";

    }

    Complex(Complex c) {

        re = c.re;

        im = c.im;

    }

}

  

public class Main {

    public static void main(String[] args) {

        Complex c1 = new Complex();

        Complex c2 = new Complex(c1);

        System.out.println(c2);

    }

}

Вывод: ошибка компилятора в строке «Complex c1 = new Complex ();»
В Java, если мы напишем наш собственный конструктор копирования или параметризованный конструктор, компилятор не создаст конструктор по умолчанию. Это поведение такое же, как в C ++.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Вывод программы Java | Набор 4

0.00 (0%) 0 votes