Primeiro, o que é o pacote
1, o pacote Overview
linguagem de programação orientada a objeto é uma simulação do mundo objetivo, o mundo objetivo, variáveis de membro estão escondidos dentro do objeto, o mundo exterior não pode manipular diretamente e modificar. O pacote pode ser considerada como uma barreira protectora contra os códigos de classe e outros tipos de dados são acedidos aleatoriamente.
Para aceder a este tipo de dados, você deve especificar o caminho. encapsulamento apropriado torna o código mais fácil de entender e manter, e melhorar o código de segurança
2, o princípio
3, o passo de acondicionamento
1. Use palavras-chave para modificar variáveis de membro privadas.
2. A necessidade de acesso a variáveis de membro, proporcionando um par correspondente de getXxx método, método setXXX
Em segundo lugar, o -Privada operação de chave pacote
1. Descrição do problema: Ao definir a idade da pessoa, não pode impedir valor razoável é definido para entrar.
Solução: A chave privada terá de ser protegida variáveis de membro pode ser modificado.
Uma vez que o uso privado de modificado, então esta classe que ainda pode ser livremente acessível. Mas! Fora deste intervalo além da categoria não directamente acessíveis.
acesso indirecto variáveis de membro privadas, é a definição de um par de crianças getter / métodos setter
- Ele deve ser chamado setXXX ou getXxx regras de nomenclatura.
- Para Getter, os parâmetros não têm, tipo de retorno e a variável membro correspondente;
- Para Setter, você não pode retornar um valor, tipos de parâmetro e a variável de membro correspondente.
2, o código de exemplo
classe Person
a classe Person {public String nome; // Nome idade int privado; // Idade vazio Mostrar pública () { System.out.println ( "Meu nome:" + Nome + "Age:" + Age); } // este o método de membros dedicados à idade configuração de dados public void o setAge (int NUM) { IF (NUM <100 && NUM> = 9.) {// Se este for o caso razoável idade NUM =; } else { System.out.println ( " dados razoável ") ;! } } // este método membros, especificamente sussurro obter dados de idade int público getAge () { idade de retorno; } }
categoria de teste
day06.demo03 Package; Demo03Person classe pública { public static void main (String [] args) { a Pessoa Pessoa = new new Pessoa (); person.show (); PERSON.NAME = "Zhao Liying"; // person.age = -20 ; // acesso direto ao conteúdo privado, frase errada! person.setAge (20 é); person.show (); } }
resultados operacionais
"D: Files \ Java \ Program \ jdk-13.0.2 \ bin \ java.exe" "-javaagent: D: \ Program Files \ JetBrains \ IntelliJ IDEA 2.019,2 \ lib \ idea_rt.jar = 62064: D: \ Program Files \ JetBrains IntelliJ IDEA \ 2.019,2 \ bin "-Dfile.encoding = UTF-8 -classpath C: \ onedrive \ java \ src \ a \ produção \ onedrive day06.demo03.Demo03Person meu nome: null, Idade: meu nome: Zhao Liying idade: 20 Processo Terminou com código de saída 0
3, praticar usando as definições de chave privada
A definição de classe
day06.demo03 Package; / * para o valor booleano entre o tipo básico, o método deve ser escrito na forma Getter isXxx e setXXX regras inalteradas. * / Class Student Public { Privado String nome; // nome idade int privado; // Idade private boolean masculino; // homem criança não é pública setMale void (booleana B) { MASCULINO = B; } public boolean IsMale () { return do sexo masculino; } public void o setName (string STR) { name = STR; } Cordas getName () {public nome retorno; } public void o setAge (int NUM) { Age = NUM; } public int getAge () { return Idade; } }
Define a classe de teste
empacotar day06.demo03; Demo04Student classe pública { public static void main (String [] args) { stu Student = new Student (); stu.setName ( "鹿晗"); stu.setAge (20); stu.setMale (true); System.out.println ( "姓名:" + stu.getName ()); System.out.println ( "年龄:" + stu.getAge ()); System.out.println ( "是不是爷们儿:" + stu.isMale ()); } }
resultados operacionais
"D: Files \ Java \ \ Program jdk-13.0.2 \ bin \ java.exe" "-javaagent: D: \ Program Files \ JetBrains \ IntelliJ IDEA 2.019,2 \ lib \ idea_rt.jar = 62152: D: \ Program Files \ \ JetBrains IntelliJ IDEA 2019,2 \ bin" -Dfile.encoding = UTF-8 -classpath C: \ onedrive \ Java \ src \ a \ produção \ onedrive day06.demo03.Demo04Student 姓名:晗鹿 年龄: 20 是不是爷们儿: verdadeiro processo terminou com código de saída 0
Em terceiro lugar, o nome da variável parâmetro com o mesmo nome como um nome de variável de membro Bem como fazer?
1. Descrição do problema
Descobrimos que o nome parâmetro formal setXXX método não respeitar as disposições pretende ver para saber o nome, por isso, se você modificar consistente com o nome da variável membro, se você ver o nome de saber o significado disso? Código é a seguinte:
Estudante classe pública { private String nome; idade int privado; setName public void (String nome) { name = nome; } SetAge public void (idade int) { age = idade; } }
Após a modificação e testes, encontramos um novo problema, os membros da atribuição de variável falhou. Ou seja, depois de modificar setXXX () o nome da variável parâmetro, o método não dar atribuição de variável membro! Isso ocorre porque o nome da variável parâmetro com o mesmo nome como um nome de variável de membro, resultando no nome da variável membro está escondido,
o método nome da variável não pode ter acesso à variável, de modo que a atribuição falhar. Então, só podemos usar essa palavra-chave, para resolver este problema o mesmo nome
2, este significado
Faz referência ao objeto atual desta classe representa a localização (valor de endereço) que suas referências de objeto.
Lembre-se: qual o método de objeto é chamado, este método representa esse objeto. Isso é para quem ligar, que isso representa.
2, este formato usado
. Este nome da variável membro;
3, usando estas variáveis método modificado, variáveis de membro para resolver o problema de código oculto é a seguinte
classe Person
day06.demo04 Package; / * membro quando as variáveis de processo e variáveis locais com o mesmo nome do tempo de aula, de acordo com o "princípio da proximidade" preferencialmente utilizar variáveis locais. Se você precisar acessar as variáveis de membro desta classe que é necessário para usar o formato: . O nome da variável deste membro "Pelo método que chamam, que é o presente" * / Classe pública da Pessoa { String nome; // meu próprio nome // nome do parâmetro é o nome da pessoa // nome de variável membro é o seu nome vazio sayHello (string name) pública { System.out.println (nome + "Olá eu sou." + this.name); System.out.println (o presente ); } }
categoria de teste
day06.demo04 Package Multa para; Demo01Person classe pública { public static void main (String [] args) { a Pessoa a Pessoa = new new Pessoa (); // definir meu próprio nome person.name = "Wang Jianlin"; person.sayHello ( "Sicong" ); System.out.println (Pessoa); // valor de endereço } }
resultados operacionais
"D: Files \ Java \ \ Program jdk-13.0.2 \ bin \ java.exe" "-javaagent: D: \ Program Files \ JetBrains \ IntelliJ IDEA 2.019,2 \ lib \ idea_rt.jar = 62613: D: \ Program Files \ \ JetBrains IntelliJ IDEA 2019,2 \ bin" -Dfile.encoding = UTF-8 -classpath C: \ onedrive \ Java \ src \ a \ produção \ onedrive day06.demo04.Demo01Person 王思聪,你好我是王健林. day06.demo04. pessoa @ 9807454 day06.demo04.Person@9807454 Processo terminou com código de saída 0
Em quarto lugar, o método de otimização pacote de construção 2--
Definition Format 1, o construtor
Modificador nome construtor (lista de parâmetros) { // membro do Método }
2, o código de exemplo
categoria estudante
day06.demo04 Package Multa para; / * método construtor é projetado para criar um objeto, quando criamos um objeto por palavra-chave novo, na verdade, chamar o método construtor. Formato: nome da classe pública (tipo de parâmetro nome do parâmetro) { método do corpo } Nota: 1. O nome ea localização do construtor deve ser exatamente o mesmo que o nome da classe, e até mesmo ter o mesmo valor de 2. Não escreva tipo de construtor de retorno, nem mesmo escrever vazio 3. o construtor não pode retornar um valor de retorno específico 4. Se você não escrever nenhum construtor, o compilador padrão será apresentado um construtor, sem parâmetros, o corpo do método não faz nada em tudo. pública Student () {} 5. O que uma vez programada pelo menos um construtor, o compilador não será apresentado. 6. O método de construção também pode ser sobrecarregado. Sobrecarregado: O mesmo nome de método, mas lista de parâmetros diferente. * / Student Classe pública { // variável de membro private string name; Privada int Age; // nenhum construtor argumento público Student () { System.out.println ( "construtor sem argumentos executá-lo!"); } // construtor parâmetro completo Student pública (String nome, int Age) { System.out.println ( "método construtor full-argumento para realizá-lo!"); This.name = nome; this.age = Idade; } // Getter setter public void o setName (string nome) { this.name = nome; } Cordas getName pública () { nome de retorno; } public void o setAge (int Age) { this.age = Idade; } public int getAge () { return Idade; } }
categoria de teste
day06.demo04 Package; Demo02Student classe pública { public static void main (String [] args) { STU1 Estudante novo novo Student = (); // construtor sem argumentos System.out.println ( "========== == "); Student STU2 = new new Student (" Zhao Liying "20); inteiro // construtor argumento System.out.println (" name: "+ stu2.getName () +" , Age: "+ stu2.getAge ( )); // Se você precisar alterar o conteúdo de dados variável de membro entre os objetos, ainda precisa usar setXXX método stu2.setAge (21); // alterar a idade System.out.println ( "name:" + stu2.getName () + "Age:" + stu2.getAge ()); } }
O resultado:
"D: Files \ Java \ Program \ jdk-13.0.2 \ bin \ java.exe" "-javaagent: D: \ Program Files \ JetBrains \ IntelliJ IDEA 2.019,2 \ lib \ idea_rt.jar = 62708: D: \ Program Files \ JetBrains IntelliJ IDEA \ 2.019,2 \ bin "-Dfile.encoding = UTF-8 -classpath C: \ onedrive \ java \ src \ a \ produção \ onedrive day06.demo04.Demo02Student construtor sem argumentos executá-lo! ============ método construtor argumento inteiro para realizá-lo! Nome: Zhao Liying, Idade: 20 Nome: Zhao Liying, Idade: 21 Processo Terminou com código de saída 0
3 Notas
1. Se você não fornecer um construtor, o sistema dará há parâmetros do construtor. 2. Se você fornecer um construtor, o sistema deixará de fornecer sem argumentos construtor. 3. O método de construção está sobrecarregado, os parâmetros podem ser definidos, ou pode não definir parâmetros
Em quinto lugar, o código padrão para -JavaBean
JavaBean é uma especificação padrão Java escrito em uma aula de língua. JavaBean atender aos requisitos de classe e classe específica deve ser público, e construtor sem argumentos, para fornecer um método para operar um conjunto e obter variável de membro.
class ClassName {public // variáveis membro // Construtor // construtor sem argumentos [deve] // construtor tem parâmetros [proposta] // membros Método // getXxx () // setXXX () }
Preparou-se em conformidade com a classe JavaBean norma, classe estudante, por exemplo, o código do padrão é como se segue:
A classe padrão geralmente têm as seguintes quatro componentes:
1. Todas as variáveis de membro deve ser modificada usando a chave privada
2 para a preparação de cada variável membro de um par de crianças método Getter / Setter
3. Preparação de um construtor sem argumento
4. escrever uma parâmetros do construtor completos
Tal classe standard, também conhecido como Java Bean
empacotar day06.demo05; Estudante classe pública { private String nome; idade int privado; // Construtor什么都不选择 Student pública () { } // Code-Construtor全选 Student pública (String nome, idade int) { this.name = nome; this.age = idade; } // Code-Gerar-Getter e Setter public String getName () { nome de retorno; } SetName public void (String nome) { this.name = nome; } Int público getAge () { idade de retorno; } SetAge public void (idade int) { this.age = idade; } }
As classes de teste, como segue:
Demo01Student classe pública { public static void main (String [] args) { stu1 Student = new Student (); stu1.setName ( "迪丽热巴"); stu1.setAge (20); System.out.printlnl ( "姓名:" + stu1.getName (+) "年龄:" + stu1.getAge ()); System.out.println ( "================="); Stu2 Student = new Student ( "古力娜扎", 21); System.out.printlnl ( "姓名:" + stu2.getName (+) "年龄:" + stu2.getAge ()); stu2.setAge (22); System.out.printlnl ( "姓名:" + stu2.getName (+) "年龄:" + stu2.getAge ()); } }
resultados operacionais
"D: Files \ Java \ Program \ jdk-13.0.2 \ bin \ java.exe" "-javaagent: D: \ Program Files \ JetBrains \ IntelliJ IDEA 2.019,2 \ lib \ idea_rt.jar = 63198: D: \ Program Files \ \ JetBrains IntelliJ IDEA 2019,2 \ bin "-Dfile.encoding = UTF-8 -classpath C: \ onedrive \ Java \ src \ a \ day06.demo05.Demo01Student produção \ onedrive nome: Dilly Reba, Idade: 20 == =============== nome: Coulee Nazha, Idade: 21 nome: Coulee Nazha, Idade: 22 Processo Terminou com código de saída 0