Resumo
Você aprenderá neste capítulo, que os métodos Java começam com um modificador de acesso público, privado, protegido ou em branco (acesso padrão). Isso é seguido por um especificador opcional, como estático, final ou abstrato. Em seguida, vem o tipo de retorno, que é nulo ou do tipo Java. O nome do método segue, usando regras padrão de identificador Java. Zero ou mais parâmetros aparecem entre parênteses como a lista de parâmetros. Em seguida, vêm os tipos de exceção opcionais. Finalmente, zero ou mais instruções são colocadas entre chaves para compor o corpo do método.
Usar a palavra-chave privada significa que o código está disponível apenas na mesma classe. Acesso padrão (privado do pacote) significa que o código está disponível apenas dentro do mesmo pacote. Usar a palavra-chave protegida significa que o código está disponível no mesmo pacote ou subclasses. Usar a palavra-chave pública significa que o código está disponível em qualquer lugar. Métodos estáticos e variáveis estáticas são compartilhados pela classe. Quando referenciadas de fora da classe, elas são chamadas usando o nome da classe - por exemplo, StaticClass.method (). Membros da instância podem chamar membros estáticos, mas membros estáticos não podem chamar membros da instância. As importações estáticas são usadas para importar membros estáticos.
Java usa passagem por valor, o que significa que chamadas para métodos criam uma cópia dos parâmetros. A atribuição de novos valores a esses parâmetros no método não afeta as variáveis do chamador. A chamada de métodos em objetos que são parâmetros de método altera o estado desses objetos e é refletida no chamador.
Métodos sobrecarregados são métodos com o mesmo nome, mas com uma lista de parâmetros diferente. Java chama o método mais específico que pode encontrar. As correspondências exatas são preferidas, seguidas por primitivas mais amplas. Depois disso, vem o autoboxing e finalmente as varargs.
Construtores são usados para instanciar novos objetos. O construtor sem argumento padrão é chamado quando nenhum construtor é codificado. Vários construtores são permitidos e podem se chamar escrevendo este (). Se this () estiver presente, deve ser a primeira declaração no construtor. Os construtores podem se referir a variáveis de instância escrevendo isso antes de um nome de variável para indicar que desejam a variável de instância e não o parâmetro de método com esse nome. A ordem de inicialização é a superclasse (que abordaremos no capítulo 5); variáveis estáticas e inicializadores estáticos na ordem em que aparecem; variáveis de instância e inicializadores de instância na ordem em que aparecem; e finalmente o construtor.
Encapsulamento refere-se a impedir que os chamadores alterem diretamente as variáveis da instância. Isso é feito tornando as variáveis de instância privadas e getters / setters públicas. Imutabilidade refere-se a impedir que os chamadores alterem as variáveis da instância. Isso usa várias técnicas, incluindo a remoção de setters. Os JavaBeans usam métodos que começam com is e get para tipos de propriedades booleanos e não booleanos, respectivamente. Os métodos que começam com set são usados para setters.
Expressões lambda, ou lambdas, permitem passar blocos de código. A sintaxe completa é semelhante a (String a, String b) -> {return a.equals (b); } Os tipos de parâmetros podem ser omitidos. Quando apenas um parâmetro é especificado sem um tipo, os parênteses também podem ser omitidos. A declaração entre chaves e retorno pode ser omitida para uma única declaração, forma abreviada (a -> a.equals (b). Lambdas são passadas para um método que espera uma interface com um método. Predicado é uma interface comum. O método removeIf () em ArrayList usa um Predicate.