У нас есть класс Solution, в котором реализуется метод мэйн:
package com.javarush.task.pro.task08.task0812;

public class Solution {
    public static void main(String[] args) {

        Pair pair = new Pair(4, 5);
        System.out.println(pair);
        pair.swap();
        System.out.println(pair);
    }
}
И класс Pair :
package com.javarush.task.pro.task08.task0812;

public class Pair {
    private int x;
    private int y;
    private int z;

    public Pair(int x, int y) {
        this.x = x;
        this.y = y;
    }

    @Override
    public String toString() {
        return String.format("x=%d, y=%d", x, y);
    }
    public void swap() {
        //напишите тут ваш код
        int a = y ^ x ;
        y = y ^ a;
        x = x ^ a;
    }
}
1. В классе Pair мы создаём функцию "Pair" ? Я так понимаю если она не void, то значит она возвратная, а раз так то где Return? И почему она "public Pair(int x, int y) { ...." , а не "public int Pair(int x, int y) { ...." ведь она возвращает int ?!! 2. В классе Solution мы же создаём объект класса Pair ?? А параметры (4, 5) передаём как будто функцию....Т.е. не понимаю запись по мне должно быть так : Pair pair = new Pair(); - создал объект класса "Pair" pair.pair(4, 5); - потом вызвал функцию и передал в неё параметры Но так не катит .. почему ???? 3. В классе Solution строка : System.out.println(pair); Мы тут обращаемся к печатанию к чему к классу или функции ?? Если к классу, то как тогда он видит параметры, если в классе Pair мы их задаём в функции "public Pair(int x, int y)" В общем чем дальше в ООП, тем больше не понятней. 4. Про @Override спрашивать не буду, и так хватает простаивания. .....