Por que, embora possa receber um Object como parâmetro, o método println() ainda possui sobrecargas que recebem objetos de tipos específicos, como String e boolean?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Por que, embora possa receber um Object como parâmetro, o método println() ainda possui sobrecargas que recebem objetos de tipos específicos, como String e boolean?
Olá Heron!
O método println() tem vários construtores e cada um deles recebe um tipo de argumento diferente. Ao fazer System.out.println(instanciaDoMeuObjeto);, o compilador consegue processar esse objeto, pois todos objetos que são criados, estendem (implicitamente) a classe Object, inclusive os tipos como String, boolean, int.
System.out.println(42); chama o construtor que recebe um argumento int e assim por diante.
Para uma leitura mais densa, mas com muitas informações, seguem os links da documentação do Java:
https://docs.oracle.com/javase/8/docs/api/index.html
https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html#println-- (Esse link mostra as sobrecargas do println()).
Espero ter ajudado!