В чем отличие void от return на примере?
Мда, вопрос вы конечно написали коряво, что мозг сломать можно. Если я вас правильно понял, то вам не ясно, почему в переменной "с" оказывается значение при том что return вы не использовали. Дело в том, что в данном случае ваша "с" это поле класса, которой вы присваиваете значение в методе getJazz, return тут совсем не нужен, потому что метод ничего не возвращает, он манипулирует полями, которые принадлежат к классу. Если бы вы захотели написать так int b = getJazz() тогда бы пришлось писать return.
ты своим void методом просто записываешь значение переменной "c", а потом просто выводишь её на экран. Если бы метод был бы такого вида:int getJazz(int a, int b){
     return c = a + b;
}
то можно было бы получить переменную "c" из этого метода, т.е обращаясь System.out.println(nn.getJazz(12,12);
Если бы переменная "c" имела бы модификатор доступа private, то ты не смог бы обратиться к ней так, как в твоем примере.
Попробую пояснить на пальцах. Возьмем твой пример.public class Main{
        public static void main(String[] args){
                Jazz nn = new Jazz();
                nn.getJazz(12, 12); // вызов void метода, который записывает в "c" число 24
                nn.c = 51;  // я могу здесь присвоить "c" другое значение, например 51
                System.out.println(nn.c); // Выводим переменную "c" которая равна 51, а не 24
        }
}