Em java você utiliza classes para organizar as regras do seu sistema, e a partir destas classes você poderá instanciar objetos. Cada classe será responsável por alguma coisa no seu sistema, por exemplo:
Sistema de registro de notas da escola Alura:
O sistema precisa armazenar Disciplinas, Turmas, Professores e Alunos.
Em C:
• Criar variáveis representando Disciplinas, Turmas, Professores e Alunos. Sendo que existirão outras variáveis com dados adicionais, como: Nomes, descrições, notas, etc. Além disso, você irá exibir na tela as informações necessárias...
Tudo isso ficará em um único código, esse código vai ter o seu main também.
Em Java:
• Você ainda terá todas essas informações de Disciplinas, Turmas, Professores e Alunos. Contudo, elas vão estar separadas em classes. A classe aluno, por exemplo, irá possuir Nome do Aluno, Cpf, Disciplinas matriculadas, etc.
Depois que você criar essas classes você irá criar mais uma, que pode ser chamada de Principal por exemplo.
Dentro dessa classe você não precisa colocar atributos (nome, CPF, etc), aqui você irá colocar o seu main. A partir desta classe você irá chamar as demais (instanciar objetos).
É algo parecido com chamar funções em C.
Agora observe como fica mais fácil de fazer manutenção:
Caso você tenha que criar um dado adicional para os professores, como idade. Você sabe exatamente onde estão os dados do professor.
Caso a média das disciplinas dos cursos mude de 7 para 6. Em C você mudaria a regra em todos os lugares do código que a usam. Já em java você precisa apenas mudar a classe Disciplinas.