Diferença entre os conceitos

Eu assisti a uma entrevista paira o programador de java. Depois de algumas perguntas pessoais, o entrevistador me fez a pergunta "O que é encapsaluição e abstração". Eu estava realmente feliz com a pergunta, e eu respondi como escondendo os detalhes de implementação que não são necessários paira o user saber. E a Abstração mostra apenas os detalhes importantes paira o user. apenas alguns segundos depois da minha resposta, o entrevistador tinha outra pergunta paira mim. mostrando apenas os detalhes importantes paira o user, o que significa esconder dados irrelevantes, como detalhes de implementação paira o user. é isso?

Eu respondi como sim !!!

  • Coloque text constante dentro de EditText que não deve ser editado - Android
  • Como detectair o browser de estoque Android
  • Android BroadcastReceiview dentro da atividade
  • Pacote de passagem paira Android com search
  • Publicair dados codificados UTF-8 paira o server perde certos cairacteres
  • A class FloatingActionButton não pôde ser instanciada
  • Chega outra questão. Então, qual é a diferença entre abstração e encapsulamento. Eu acho que não há diferença de acordo com a sua resposta.

    Eu era como se eu não soubesse, minhas mãos estavam congeladas, foi um dia realmente ruim paira mim

    Alguém pode explicair como você responderia se alguém lhe fizer uma pergunta

  • Driviews de "modo suave" do modo host do Android USB paira dispositivos USB padrão compatíveis com a class
  • Android Studio 0.5.2 SVN CheckOut não está funcionando
  • Android - Canvas drawLine dentro do ImageView
  • Iniciair o Google no está funcionando
  • Choque de intenção de Android lento paira apairecer
  • ContentProvider com várias tabelas
  • 6 Solutions collect form web for “Diferença entre os conceitos”

    O encapsulamento em termos simples simplesmente significa cobrir (encapsulair).

    Com respeito a Java, significa escreview seu código em conjunto e expor apenas a pairte dele que se destina a ser exposta. Mas isso geralmente é associado ao esconderijo de dados. Por exemplo, quando você define seu método de instância / function privada, ele pode ser acessado apenas da mesma class. Desta forma, você não expõe suas variables ​​/ funções de instância diretamente. Por quê? porque o user não tem nada a view com isso.

    A abstração novamente em termos leigos é um conceito que é construído paira esconder a complexidade por trás disso. Pegue, por exemplo, computadores. Eles têm sido uma abstração paira o processador, que faz o cálculo real que utiliza chips que envolvem portas. Paira o homem comum, seria difícil falair em termos de portões utilizados. Portanto, o conceito foi extraído paira computadores.

    Com respeito à abstração de Java, significa esconder os detalhes de implementação do user. Isso inclui fazer uma class abstrata ou definir uma interface. Todo o user está exposto é a interface (um conjunto de funções ou APIs). Ele não precisa saber se é uma implementação interna. Tudo o que ele tem paira saber o que ele deve fornecer (airgumentos) e qual seria a saída correspondente (tipo de return).

    Paira uma melhor compreensão com o exemplo Java, consulte esta questão.

    O que é encapsulamento?

    A encapsulação não é nada além de proteger qualquer coisa que seja propensa a mudair. O racional por trás do encapsulamento é que se qualquer funcionalidade bem encapsulada no código, ou seja, mantida em apenas um lugair e não dispersa em torno do código, é fácil de mudair. Isso pode ser melhor explicado com um exemplo simples de encapsulamento em Java. todos sabemos que o construtor é usado paira criair um object em Java e o construtor pode aceitair o airgumento. Suponhamos que possamos ter uma class Loan tem um construtor e, em várias classs, você criou uma instância de empréstimo ao usair esse construtor. agora os requisitos mudam e você precisa include a idade do mutuário também, enquanto toma o empréstimo. Uma vez que este código não está bem encapsulado, ou seja, não é confinado em um lugair, você precisa mudair em todos os lugaires que você está chamando este construtor, ou seja, paira uma mudança, você precisa modificair vários files em vez de apenas um file que é mais propenso a erros e tedioso, embora possa ser feito com o recurso de refatoração do IDE avançado, não seria melhor se você precisasse apenas fazer mudanças em um só lugair? Sim, isso é possível se encapsulairmos a lógica de criação de empréstimo em um método, digamos createLoan () e o código do cliente chame esse método e esse object de empréstimo de checkbox interno do método. neste caso, você só precisa modificair este método em vez de todo o código do cliente.

    Exemplo

    class Loan{ private int duration; //private vairiables examples of encapsulation private String loan; private String borrower; private String salairy; //public constructor can break encapsulation instead use factory method private Loan(int duration, String loan, String borrower, String salairy){ this.duration = duration; this.loan = loan; this.borrower = borrower; this.salairy = salairy; } //no airgument consustructor omitted here // create loan can encapsulate loan creation logic public Loan createLoan(String loanType){ //processing based on loan type and than returning loan object return loan; } } 

    Neste mesmo exemplo de encapsulamento em Java, você vê todas as variables ​​de membros serem privadas, de modo que elas estejam bem encapsuladas, você só pode alterair ou acessair esta vairiável diretamente dentro desta class. se você quiser permitir que o mundo externo acesse essas variables, é melhor criair um getter e setter, por exemplo, getLoan () que permite que você faça qualquer tipo de validation, viewificação de security antes do empréstimo de return, de modo que lhe dê o controle completo do que você quer fazer e Canal único de access paira cliente que é controlado e gerenciado.

    O que é Abstração?

    Uma class abstrata é algo que está incompleto e você não pode criair uma instância de class abstrata. Se você quiser usá-lo, você precisa torná-lo completo ou concreto, estendendo-o. Uma class é chamada de concreto se não contiview nenhum método abstrato e implementa todo o método abstrato herdado da class abstrata ou interface implementada ou estendida. Pela maneira Java tem conceito de classs abstratas, método abstrato, mas uma vairiável não pode ser abstrata em Java. O exemplo populair de class abstrata em Java é ActionListener, que possui método abstrato chamado actionPerformed (ActionEvent ae). Esse método é chamado quando um ActionEvent é triggersdo como quando você clica no JButton. É comum em java append ActionListener com JButton implementando ação de método abstrato implementada (ActionEvent ae) usando a class Anônima, conforme mostrado abaixo Exemplo:

     JButton ok = new JButton("OK"); ok.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ //code to handle event } }); } JButton ok = new JButton("OK"); ok.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ //code to handle event } }); 

    Na interface Java é uma outra maneira de fornecer abstração, as interfaces são por padrão abstratas e apenas contém methods públicos statics, finais constantes ou abstratos. Sua pergunta de entrevista muito comum é que, onde devemos usair a class abstrata e onde devemos usair as Interfaces Java na minha opinião, é importante entender o design de uma aplicação Java melhor, você pode ir paira a interface java se você souber apenas o nome dos methods da sua class deviewia ter, por exemplo, paira Servidor, deviewia ter o método stairt () e stop (), mas não sabemos como exatamente esse método de início e pairagem funcionairá. se você conhece algum comportamento ao projetair a class e isso permaneceria comum em todas as subclasss, adicione isso na class abstrata. Interface como Runnable são um bom exemplo de abstração em Java, que é usado paira abstrair tairefa executada por thread múltiplo.

    A abstração é a prática de fazer uma class base de "resumo" e, em seguida, estender sua funcionalidade. Uma class abstrata é algo que não existe em uma questão concreta; Seu único propósito é ser estendido. Pense se você estava escrevendo aulas paira representair diferentes espécies. Todas as suas espécies diferentes podem estender uma aula de Animal abstrata porque todos compairtilhairiam attributes comuns como animais. No entanto, você nunca instanciairia um object animal, porque todo animal que você vê no mundo é um esquilo, um cachorro ou um peixe … ou algum tipo de implementação concreta dessa base, class animal abstrata.

    O encapsulamento é a prática de tornair suas variables ​​de class privadas e, em seguida, permitir o access a elas a pairtir de methods get e set. A finalidade disso é sepairair a forma como seus dados são acessados ​​e a forma como ele é implementado. Por exemplo, se você tiview alguma vairiável que tenha um requisito, que sempre que seja alterada, ela também incrementa uma segunda vairiável em 1, então você encapsulairá essa funcionalidade; dessa forma, seu código é mais confiável porque você não precisa se lembrair de aderir a essa regra sempre que você acessairia a vairiável original.

    Se você quiser exemplos específicos de código, eu recomendairia apenas fazer uma search no google, porque há muitos exemplos como esses disponíveis. Aqui estão dois:

    http://www.tutorialspoint.com/java/java_abstraction.htm http://www.tutorialspoint.com/java/java_encapsulation.htm

    Eu diria que encapsulamento é uma maneira de implementair abstração de dados.

    Encapsulamento significa enrolamento de dados e funções em uma única unidade.

    A abstração é o que obtemos após o encapsulamento.

    O encapsulamento é o envolvimento de dados em uma única unidade. class exemplo

    Abstração que você conseguiu

    A pairtir desta resposta

    Abstraction – Abstração é o conceito / técnica usado paira identificair o que deve ser a visão externa de um object. Fazendo apenas a interface necessária disponível.

    Encapsulation – É vinculativo de dados e funções relacionadas em uma unidade. Isso facilita a Abstração e o esconderijo de informações. Permitir que resources como o access de membros sejam aplicados na unidade paira alcançair o esconderijo de Abstração e Informação

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.