Modificar: Abstract

13 respostas
T

Boa tarde galera,

estou com uma dúvida com o modificar abstract, estou lendo estudando o JAVA e estou com com umas dúvidas

essa é minha classe abstract, então sempre que tenho uma classe abstract tenho que ter pelo menos 1 metodo ou váriavel abstract, correto?

abstract class abs {
	private String marca;
	private String cor;
	private String motor;
	private String vidro;
	
	abstract void Veiculo();
	
	void setMarca(String marca1){
		marca = marca1;
	}
	
	void setCor(String cor1){
		cor = cor1;
	}
	
	String getMotor(){
		return "1.6";
	}
	
	String getVidro(int num){
		if (num == 1){
			return "Eletrico";
		}else{
			return "Manual";
		}
		
	}
				
}

essa é minha classe que extende a classe abstract, então tenho que criar um metodo com o mesmo nome do metodo da classe abstract?

public class recebe extends abs{
		public void Veiculo(){
			this.getMotor();
			this.getVidro(1);
		}
	public static void main (String args[]){
		recebe a = new recebe();
		System.out.println(a.getMotor());
		System.out.println(a.getVidro(1));

		}
	}

Estou meio confuso se alguem puder ajudar! =D 8)

13 Respostas

davidbuzatto

[list]Toda classe abstract tem que ter pelo menos um método abstrato.[/list]
[list]Não é permitido instanciar objetos de uma classe abstrata (claro, pois existe pelo menos um método que não possui implementação, aquele que é abstrato)[/list]
[list]Uma classe que estende uma classe abstrata, se esta não for abstrata também, deve forneceer a implementação do(s) método(s) abstrato(s), “sobrescrevendo” o(s) método(s) abstrato(s) herdado(s).[/list]
[list]Se a classe que a extende também for abstrata, esta pode fornecer ou não implementação para os métodos herdados, sendo que a primeira clase concreta (não abstrata) que herdar esse hierarquia tem que obrigatóriamente fornecer a implementação dos métodos abstratos herdados.[/list]

Ajudou?

Até mais!

T

ajudou, sim agora eu estou tendando compreender …

Eu posso instaciar a classe mas nao os metodos pelo que eu estou entendendo, um exemplo é o JFrame eu instacio a classe mas nao instacio nenhum objetivo pq quando eu instanciei ele vem na Hierarquia da classe, correto?

estamos caminhando! =D

alberto_ribeiro

você disse: "Eu posso instaciar a classe mas nao os metodos pelo que eu estou entendendo"

você não pode instanciar nenhuma classe abstrata… você pode instanciar uma classe concreta que extenda a classe abstrata para usar os métodos e não instaciar a classe abstrata diretamente.

[]'s

entendeu ?

davidbuzatto

Você só pode instanciar (criar objetos) de classes NÃO abstratas, ou seja classes concretas. Métodos não são instanciados, eles fazem parte de uma instância.

E caso estes sejam estáticos estes pertencem a classe e não a instância, apesar de cada instância poder acessar normalmente o método estático de sua classe.

Caso você não saiba, métodos estáticos são métodos que existem independentemente de existir algum objeto da classe a qual ele pertence.

Instanciar = Criar = Criar um novo objeto = usar o operador new (na maioria dos casos :smiley: )

Digo na maioria dos casos pois para criar um objeto da classe String por exemplo, vc não precisa necessariamente usar um construtor explícito, bstante somente fazer String s = “algumaCoisa” q o compilador já faz o serviço para você.

Até mais!

T

ahhh compreendi,

o unica objetivo da classe concreta é deixar as coisas semi prontas pelo que eu to entendendo…

igual uma construção o cimento ja vem pronto nos caminhões

uhmmmm compreendi, crio um classe Predio extendo ela para Construção que lá eu tenho o metodo cimento que já vem prontinho eu so preciso fazer algumas implementações?

Pelo que to vendo tenho que estudar OO ? o que acham?

Abraços!

alberto_ribeiro

seria ótimo estudar conceitos de OO, e falando a respeito do seu post: a classe abstrata ajuda você a definir seus objetos…

[]'s

davidbuzatto

Hehehehe vc está confundindo os conceitos…

Concreto = que pode ser criado
Abstrato = modelo que deve ser seguido

Hehehehehe é melhor estudar sim para fazer com que os conceitos fiquem mais claros… Aprender Java sem POO não é uma boa prática, pois como Java é uma linguagem OO é ineterssante que você saiba como tudo é feito e como as coisas funcionem.

Num vai fazer que nem o pessoal do Delphi hein (a maioria é claro)… Programar estruturado numa linguagem OO…

Falow!

T

Compreendi.

Vlw to estudando aqui ai tem vezes que me aparece umas dúvidas! rs

Vlw!

então eu estou fazendo a coisa certa no meu código acima?

alberto_ribeiro

só uma coisinha nome de classe por padrão no Java inicia com letra em maiúsculo…

abstract class Abs…

public class Recebe extends Abs…

em uma classe abstrata procure colocar somente o que será abstrato mesmo e na classe que extender ela você adiciona os outros métodos…
particulamente eu prefiro assim… mas alguém pode dizer outro ponto de vista ???

[]'s

T

alberto_ribeiro, Seguindo suas dicas da uma olhada agora!

Classe Abstrata

abstract class Abs {
            abstract void Pessoa();
            abstract void Aninal();
}

Classe Main

public class Main extends Abs{
    void Aninal(){
        andar("Animal");
    }
    void Pessoa(){
        andar("Pessoa");
    }
    
   public void andar(String tipo){
        if (tipo == "Animal"){
            System.out.println( "4 patas");
        }else if(tipo == "Pessoa"){
            System.out.println("2 Pernas");
        }       
    }
    public static void main(String[] args) {
        Main a = new Main();
            a.Aninal();
            a.Pessoa();
    }
}

vlw galera, agora vou dar uma olhada lá no mundo OO

para ver umas dicas!!! mas já deu uma clareada! vlwww

Sami_Koivu

davidbuzatto:
[list]Toda classe abstract tem que ter pelo menos um método abstrato.[/list]

Na verdade, é perfeitamente possível criar uma classe abstrata sem nenhum método abstrato - se bem que não consigo imaginar qual seria a utilidade disso.

T

Compreendido!! agora é como se fosse uma receita de bolo!!

uma classe abstract parecido com uma Interface !?!?!

respondo hj a noite… to indo para a facul prova de matemática to ferrado!

davidbuzatto

Nossa, num tinha me atentado a isso Sami! Valeu pelo esclarecimento :smiley:

truck1n, Você pode pensar em uma interface como se fosse uma classe 100% abstrata.

Criado 5 de dezembro de 2006
Ultima resposta 7 de dez. de 2006
Respostas 13
Participantes 4