{"id":24409,"date":"2023-03-02T18:13:16","date_gmt":"2023-03-02T18:13:16","guid":{"rendered":"https:\/\/filememo.info\/tech\/para-que-serve-um-metodo-abstracto\/"},"modified":"2023-03-02T18:13:16","modified_gmt":"2023-03-02T18:13:16","slug":"para-que-serve-um-metodo-abstracto","status":"publish","type":"post","link":"https:\/\/filememo.info\/tech\/para-que-serve-um-metodo-abstracto\/","title":{"rendered":"Para que serve um m\u00e9todo abstracto?"},"content":{"rendered":"<div class=\"orig\">\n<div class=\"origqestion\">Para que serve o m\u00e9todo abstrato?<\/div>\n<div class=\"origanswer\">\n<div><span><span>O que \u00e9 um m\u00e9todo abstrato? \u00c9 um m\u00e9todo que n\u00e3o tem um corpo, ou seja, um m\u00e9todo n\u00e3o implementado. Uma classe que cont\u00e9m um ou mais m\u00e9todos abstratos deve ser declarada explicitamente como abstrata. Essa classe, no entanto, pode ter m\u00e9todos concretos (n\u00e3o-abstratos).<\/span><\/span><\/div>\n<\/div>\n<div class=\"origurl\">\n\t\t\t\t<span> Aprender mais sobre<\/span> <a href=\"https:\/\/www.feg.unesp.br\/Home\/PaginasPessoais\/profedsonluizfrancasenne\/pc2-cap5.pdf\">www.feg.unesp.br<\/a>\n\t\t\t<\/div>\n<\/p><\/div>\n<div class=\"articlecontent\">Em Java, um m\u00e9todo abstracto \u00e9 um m\u00e9todo que n\u00e3o tem implementa\u00e7\u00e3o na classe em que \u00e9 declarado. Em vez disso, \u00e9 declarado com a palavra-chave abstract e destina-se a ser substitu\u00eddo por subclasses. O objectivo de um m\u00e9todo abstracto \u00e9 fornecer uma interface comum para um conjunto de classes relacionadas, permitindo que cada classe implemente o m\u00e9todo \u00e0 sua maneira. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> A abstrac\u00e7\u00e3o em Java refere-se ao acto de esconder detalhes complexos e fornecer uma interface simplificada para os clientes interagirem. A abstrac\u00e7\u00e3o \u00e9 conseguida atrav\u00e9s da utiliza\u00e7\u00e3o de classes e interfaces abstractas, que permitem aos programadores definir comportamentos e propriedades comuns sem especificar os detalhes de implementa\u00e7\u00e3o. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Uma classe abstracta em Java \u00e9 uma classe que n\u00e3o pode ser instanciada, o que significa que n\u00e3o \u00e9 poss\u00edvel criar um objecto de uma classe abstracta. Em vez disso, destina-se a ser subclasse e fornece um conjunto comum de comportamentos e propriedades para as suas subclasses. As classes abstractas podem conter m\u00e9todos abstractos e n\u00e3o abstractos, bem como vari\u00e1veis e construtores. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Para criar um m\u00e9todo abstracto em Java, \u00e9 necess\u00e1rio declarar primeiro o m\u00e9todo com a palavra-chave abstract. Por exemplo, se tiveres uma classe abstracta chamada Animal, podes declarar um m\u00e9todo abstracto chamado makeSound() desta forma: <\/p>\n<div class=\"title\"> abstract void makeSound(); <\/div>\n<p> Quando voc\u00ea declara um m\u00e9todo abstrato, voc\u00ea est\u00e1 essencialmente dizendo que o m\u00e9todo deve ser implementado por qualquer subclasse da classe abstrata. Isso ocorre porque um m\u00e9todo abstrato n\u00e3o tem implementa\u00e7\u00e3o na pr\u00f3pria classe abstrata, ent\u00e3o ele deve ser fornecido pela subclasse. <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> Para criar uma subclasse que implemente um m\u00e9todo abstrato, voc\u00ea simplesmente precisa sobrescrever o m\u00e9todo na subclasse e fornecer uma implementa\u00e7\u00e3o. Por exemplo, se voc\u00ea tem uma subclasse de Animal chamada Dog, voc\u00ea pode fornecer uma implementa\u00e7\u00e3o para o m\u00e9todo makeSound() como esta: <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> void makeSound() { <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> System.out.println(&#8220;Woof!&#8221;); <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> } <\/p>\n<div class=\"newlinediv\"><\/div>\n<p> A diferen\u00e7a entre uma interface e uma classe abstracta em Java \u00e9 que uma interface \u00e9 uma classe completamente abstracta, o que significa que n\u00e3o pode conter quaisquer detalhes de implementa\u00e7\u00e3o. Uma interface \u00e9 simplesmente um conjunto de assinaturas de m\u00e9todos que uma classe deve implementar para ser considerada um subtipo da interface. Uma classe abstracta, por outro lado, pode conter m\u00e9todos abstractos e n\u00e3o abstractos, bem como vari\u00e1veis e construtores. Adicionalmente, uma classe s\u00f3 pode estender uma classe abstracta, mas pode implementar m\u00faltiplas interfaces.<\/p><\/div>\n<div class=\"questions\">\n<div class=\"questionstitle\">FAQ<\/div>\n<div class=\"question\">\n<div class=\"qtitle\"> Os m\u00e9todos abstractos de uma superclasse podem ser implementados numa subclasse?<\/div>\n<p> Sim, os m\u00e9todos abstractos de uma superclasse podem ser implementados numa subclasse. De facto, \u00e9 obrigat\u00f3rio que todos os m\u00e9todos abstractos declarados numa superclasse sejam implementados nas suas subclasses. Isto porque o objectivo de declarar um m\u00e9todo como abstracto numa superclasse \u00e9 garantir que qualquer subclasse que a estenda tem de fornecer uma implementa\u00e7\u00e3o para esse m\u00e9todo. Se isso n\u00e3o for feito, resultar\u00e1 em um erro de compila\u00e7\u00e3o. <\/p>\n<\/div>\n<div class=\"question\">\n<div class=\"qtitle\"> O que \u00e9 uma classe de entidade?<\/div>\n<p> Uma classe de entidade \u00e9 uma classe Java que representa uma tabela em um banco de dados. Ela cont\u00e9m atributos que correspondem a colunas na tabela e m\u00e9todos que executam opera\u00e7\u00f5es nos dados da tabela. As classes de entidade s\u00e3o normalmente usadas em estruturas de mapeamento objeto-relacional, como o Hibernate, para mapear entre objetos Java e tabelas de banco de dados. <\/p>\n<\/div>\n<div class=\"question\">\n<div class=\"qtitle\"> \u00c9 poss\u00edvel instanciar uma classe abstracta?<\/div>\n<p> N\u00e3o, n\u00e3o \u00e9 poss\u00edvel instanciar uma classe abstracta. Uma classe abstracta \u00e9 uma classe que cont\u00e9m pelo menos um m\u00e9todo abstracto, que \u00e9 um m\u00e9todo sem implementa\u00e7\u00e3o. Como resultado, uma classe abstracta n\u00e3o pode ser instanciada por si s\u00f3 porque est\u00e1 incompleta e n\u00e3o tem os detalhes de implementa\u00e7\u00e3o necess\u00e1rios. No entanto, as classes abstractas podem ser estendidas por outras classes que fornecem os detalhes de implementa\u00e7\u00e3o em falta para os m\u00e9todos abstractos.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Para que serve o m\u00e9todo abstrato? O que \u00e9 um m\u00e9todo abstrato? \u00c9 um m\u00e9todo que n\u00e3o tem um corpo, ou seja, um m\u00e9todo n\u00e3o implementado. Uma classe que cont\u00e9m um ou mais m\u00e9todos abstratos deve ser declarada explicitamente como abstrata. Essa classe, no entanto, pode ter m\u00e9todos concretos (n\u00e3o-abstratos). Aprender mais sobre www.feg.unesp.br Em &#8230; <a title=\"Para que serve um m\u00e9todo abstracto?\" class=\"read-more\" href=\"https:\/\/filememo.info\/tech\/para-que-serve-um-metodo-abstracto\/\" aria-label=\"Read more about Para que serve um m\u00e9todo abstracto?\">Ler mais<\/a><\/p>\n","protected":false},"author":3345,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1860],"tags":[],"class_list":["post-24409","post","type-post","status-publish","format-standard","hentry","category-programacao-orientada-a-objectos"],"_links":{"self":[{"href":"https:\/\/filememo.info\/tech\/wp-json\/wp\/v2\/posts\/24409","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/filememo.info\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/filememo.info\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/filememo.info\/tech\/wp-json\/wp\/v2\/users\/3345"}],"replies":[{"embeddable":true,"href":"https:\/\/filememo.info\/tech\/wp-json\/wp\/v2\/comments?post=24409"}],"version-history":[{"count":0,"href":"https:\/\/filememo.info\/tech\/wp-json\/wp\/v2\/posts\/24409\/revisions"}],"wp:attachment":[{"href":"https:\/\/filememo.info\/tech\/wp-json\/wp\/v2\/media?parent=24409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/filememo.info\/tech\/wp-json\/wp\/v2\/categories?post=24409"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/filememo.info\/tech\/wp-json\/wp\/v2\/tags?post=24409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}