Рубрики

Копировать конструктор в Java

Обязательное условие — Конструкторы в Java
Как и C ++, Java также поддерживает конструктор копирования. Но, в отличие от C ++, Java не создает конструктор копирования по умолчанию, если вы не пишете свой собственный.

Ниже приведен пример Java-программы, в которой показано простое использование конструктора копирования.

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

  

class Complex {

  

    private double re, im;

      

    // Нормальный параметризованный конструктор

    public Complex(double re, double im) {

        this.re = re;

        this.im = im;

    }

      

    // копировать конструктор

    Complex(Complex c) {

        System.out.println("Copy constructor called");

        re = c.re;

        im = c.im;

    }

       

    // Переопределяем toString класса Object

    @Override

    public String toString() {

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

    }

}

  

public class Main {

  

    public static void main(String[] args) {

        Complex c1 = new Complex(10, 15);

          

        // Следующее включает вызов конструктора копирования

        Complex c2 = new Complex(c1);   

  

        // Обратите внимание, что следующее не требует вызова конструктора копирования как

        // не примитивные переменные являются просто ссылками.

        Complex c3 = c2;   

  

        System.out.println(c2); // toString () из c2 вызывается здесь

    }

}

Выход:

Copy constructor called
(10.0 + 15.0i)

Теперь попробуйте следующую программу Java:

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

  

class Complex {

  

    private double re, im;

  

    public Complex(double re, double im) {

        this.re = re;

        this.im = im;

    }

}

  

public class Main {

      

    public static void main(String[] args) {

        Complex c1 = new Complex(10, 15);  

        Complex c2 = new Complex(c1);  // здесь ошибка компилятора

    }

}

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

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

Копировать конструктор в Java

0.00 (0%) 0 votes