Estou com uma dúvida. imaginando que tenho uma classe chamada “Livro” que tem como uma variável de instância uma referencia a outra classe chamada “Autor”.
Então, é que um amigo meu disse que esse método é “pouco lógico”. Mas a explicação dele não me convenceu, por isso resolvi tirar a dúvida com vcs…
Realmente só consigo imaginar esse modo. Talvez se declarasse autor" como protected ao invés de private eu pudesse acessa-lo diretamente nas classes filhas, mas acho que isso quebraria o encapsulamento…
jPscoralicK
null
bcartaxo
jPscoralicK acho q vc se atrapalhou quanto a definição do modificador de acesso protected. O modificador de acesso protected tem visibilidade de pacote e para suas classe filhas.
Se você definir um atributo ou método como protected, todas as classe que pertecem ao mesmo pacote que a sua, e todas as classe filhas dessa sua classe terão acesso diretamente a sua variável. Você em muitos momentos estaria sim quebrando o encapsulamento.
Essas decisões de que modificador de acesso adotar são flexíveis e variam de caso para caso, porém a regra geral é ENCAPSULAR, private neles =PP
Nesse teu caso ao que me parece configura-se sim que você deve utilziar encapsulamento, já que está sendo definida uma classe de entidade básica.
publicclassPrograma{publicstaticvoidmain(String[]args){Livrolivro=newLivro();livro.setNomeLivro("Java - Como Programar");livro.getAutor().setNomeAutor("Deitel");livro.getAutor().setAnoNascimento(1950);}}
É dessa maneira que devo fazer o acesso pra deixar o programa encapsulado corretamento?
Não sei se o nome que utilizei pro método que retorna a classe “autor” seja o mais correto (getAutor() ). Digo isso porque quando vou rodar o programa fica com um “get” seguido de um “set”. Pra mim, isso tem lógica, mas talvez exista uma grafia mais coerente… realmente não sei. Como vocês fazem esse tipo de acesso?
bcartaxo
Kra vc ta fazendo td certo. Inclusive a grafia correta do método getAutor está perfeita. Não que os métodos set e get não possam assumir o noem que vc quiser, porém em java existe um conceito chamado JavaBeans, que utiliza um determinado padrão de escrita de métodos e campos para os “beans”. Caso queira saber mais sobre JavaBeans segue o link: