Entendo POO
06/06/2019
0
Olá galera, to com um dúvida que para muitos deve ser besteira, mas pra mim ta difícil, bom eu entendi na teoria o que é Herança, mas to com dúvida para resolver a seguinte questão.
Informe abaixo uma classe chamada Programador, que respeite as regras abaixo:
Contenha uma propriedade privada linguagem textual;
A proprieade deve ser iniciada no construtor da classe;
Sobrescreva o método showInfo() da superclasse;
Exiba os dados do "Programador".
Entrada de dados
Carlos Silva
33
Java
Saída esperada
Carlos Silva
33
Java
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
class Pessoa
{
private String nome;
private int idade;
public Pessoa(String nome, int idade)
{
this.nome = nome;
this.idade = idade;
}
public void showInfo()
{
System.out.println(nome);
System.out.println(idade);
}
}
//meu código
class Programador extends Pessoa {
private String linguagem;
public Programador(String nome, int idade, String linguagemn){
this.nome = nome;
this.idade = idade;
this.linguagem = linguagem;
}
@Override
public void showInfo(){
System.out.println(Programador.nome);
System.out.println(Programador.idade);
}
}
public class Programa
{
public static void main(String []args){
Scanner scann = new Scanner(System.in);
Pessoa a = new Programador(scann.nextLine(), Integer.valueOf(scann.nextLine()), scann.nextLine());
a.showInfo();
}
}
Informe abaixo uma classe chamada Programador, que respeite as regras abaixo:
Contenha uma propriedade privada linguagem textual;
A proprieade deve ser iniciada no construtor da classe;
Sobrescreva o método showInfo() da superclasse;
Exiba os dados do "Programador".
Entrada de dados
Carlos Silva
33
Java
Saída esperada
Carlos Silva
33
Java
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
class Pessoa
{
private String nome;
private int idade;
public Pessoa(String nome, int idade)
{
this.nome = nome;
this.idade = idade;
}
public void showInfo()
{
System.out.println(nome);
System.out.println(idade);
}
}
//meu código
class Programador extends Pessoa {
private String linguagem;
public Programador(String nome, int idade, String linguagemn){
this.nome = nome;
this.idade = idade;
this.linguagem = linguagem;
}
@Override
public void showInfo(){
System.out.println(Programador.nome);
System.out.println(Programador.idade);
}
}
public class Programa
{
public static void main(String []args){
Scanner scann = new Scanner(System.in);
Pessoa a = new Programador(scann.nextLine(), Integer.valueOf(scann.nextLine()), scann.nextLine());
a.showInfo();
}
}
Diego Wenndson
Curtir tópico
+ 0
Responder
Posts
07/06/2019
Alex William
Olá, amigo.
Vamos por parte:
Primeiro, atributos "private" não podem ser acessados fora da classe, portanto para setar o nome e a idade, elas tem que ser "public" na classe "Pessoa";
Segundo voce tem uma classe abstrata "Pessoa" com um construtor. Toda a vez que você chama-la, ele vai chamar o construtor até mesmo no extends;
Eu coloquei o metodo com outro nome dentro da classe pessoa, deixando assim:
Depois disso, a mesma coisa em programador, porem uma coisa é que no seu parametro de entrada você tem "linguagem" que é o mesmo nome do seu atributo. Isso gera um conflito, por isso eu mudei o nome no metodo.
Como a classe Programador estende Pessoa, eu posso chamar setPessoa sem precisar estanciar o objeto(Pessoa x = new Pessoa()).
Deixei sua classe assim:
Sua classe Programa não possui erro nenhum a principio.
Vamos explicar sobre herança:
Quando você estende uma classe em outra, a classe "filha" herda todos os metodos e atributos publicos, não precisando que você declare eles novamente. Bem como podendo chama-los sem precisar estanciar um objeto para eles.
No básico seria isso.
Qualquer coisa, você pode especificar melhor sua duvida.
Espero ter ajudado. :D
Vamos por parte:
Primeiro, atributos "private" não podem ser acessados fora da classe, portanto para setar o nome e a idade, elas tem que ser "public" na classe "Pessoa";
Segundo voce tem uma classe abstrata "Pessoa" com um construtor. Toda a vez que você chama-la, ele vai chamar o construtor até mesmo no extends;
Eu coloquei o metodo com outro nome dentro da classe pessoa, deixando assim:
class Pessoa { public String nome; public int idade; public void setPessoa(String nome, int idade) { this.nome = nome; this.idade = idade; } public void showInfo() { System.out.println(nome); System.out.println(idade); } }
Depois disso, a mesma coisa em programador, porem uma coisa é que no seu parametro de entrada você tem "linguagem" que é o mesmo nome do seu atributo. Isso gera um conflito, por isso eu mudei o nome no metodo.
Como a classe Programador estende Pessoa, eu posso chamar setPessoa sem precisar estanciar o objeto(Pessoa x = new Pessoa()).
Deixei sua classe assim:
class Programador extends Pessoa { public String linguagem; public Programador(String nome, int idade, String inLinguagemn){ setPessoa(nome, idade); this.linguagem = inLinguagemn; } @Override public void showInfo(){ System.out.println(this.nome); System.out.println(this.idade); System.out.println(this.linguagem); } }
Sua classe Programa não possui erro nenhum a principio.
class Programa { public static void main(String []args){ Scanner scann = new Scanner(System.in); Pessoa a = new Programador(scann.nextLine(), Integer.valueOf(scann.nextLine()), scann.nextLine()); a.showInfo(); } }
Vamos explicar sobre herança:
Quando você estende uma classe em outra, a classe "filha" herda todos os metodos e atributos publicos, não precisando que você declare eles novamente. Bem como podendo chama-los sem precisar estanciar um objeto para eles.
No básico seria isso.
Qualquer coisa, você pode especificar melhor sua duvida.
Espero ter ajudado. :D
Responder
07/06/2019
Diego Wenndson
Olá, amigo.
Vamos por parte:
Primeiro, atributos "private" não podem ser acessados fora da classe, portanto para setar o nome e a idade, elas tem que ser "public" na classe "Pessoa";
Segundo voce tem uma classe abstrata "Pessoa" com um construtor. Toda a vez que você chama-la, ele vai chamar o construtor até mesmo no extends;
Eu coloquei o metodo com outro nome dentro da classe pessoa, deixando assim:
Depois disso, a mesma coisa em programador, porem uma coisa é que no seu parametro de entrada você tem "linguagem" que é o mesmo nome do seu atributo. Isso gera um conflito, por isso eu mudei o nome no metodo.
Como a classe Programador estende Pessoa, eu posso chamar setPessoa sem precisar estanciar o objeto(Pessoa x = new Pessoa()).
Deixei sua classe assim:
Sua classe Programa não possui erro nenhum a principio.
Vamos explicar sobre herança:
Quando você estende uma classe em outra, a classe "filha" herda todos os metodos e atributos publicos, não precisando que você declare eles novamente. Bem como podendo chama-los sem precisar estanciar um objeto para eles.
No básico seria isso.
Qualquer coisa, você pode especificar melhor sua duvida.
Espero ter ajudado. :D
Vamos por parte:
Primeiro, atributos "private" não podem ser acessados fora da classe, portanto para setar o nome e a idade, elas tem que ser "public" na classe "Pessoa";
Segundo voce tem uma classe abstrata "Pessoa" com um construtor. Toda a vez que você chama-la, ele vai chamar o construtor até mesmo no extends;
Eu coloquei o metodo com outro nome dentro da classe pessoa, deixando assim:
class Pessoa { public String nome; public int idade; public void setPessoa(String nome, int idade) { this.nome = nome; this.idade = idade; } public void showInfo() { System.out.println(nome); System.out.println(idade); } }
Depois disso, a mesma coisa em programador, porem uma coisa é que no seu parametro de entrada você tem "linguagem" que é o mesmo nome do seu atributo. Isso gera um conflito, por isso eu mudei o nome no metodo.
Como a classe Programador estende Pessoa, eu posso chamar setPessoa sem precisar estanciar o objeto(Pessoa x = new Pessoa()).
Deixei sua classe assim:
class Programador extends Pessoa { public String linguagem; public Programador(String nome, int idade, String inLinguagemn){ setPessoa(nome, idade); this.linguagem = inLinguagemn; } @Override public void showInfo(){ System.out.println(this.nome); System.out.println(this.idade); System.out.println(this.linguagem); } }
Sua classe Programa não possui erro nenhum a principio.
class Programa { public static void main(String []args){ Scanner scann = new Scanner(System.in); Pessoa a = new Programador(scann.nextLine(), Integer.valueOf(scann.nextLine()), scann.nextLine()); a.showInfo(); } }
Vamos explicar sobre herança:
Quando você estende uma classe em outra, a classe "filha" herda todos os metodos e atributos publicos, não precisando que você declare eles novamente. Bem como podendo chama-los sem precisar estanciar um objeto para eles.
No básico seria isso.
Qualquer coisa, você pode especificar melhor sua duvida.
Espero ter ajudado. :D
Opa amigo eu conseguir resolve da sim para acessar os atributos eles estando privados, pois os mesmo estão encapsulados.
Para resolve o meu problema tive apenas que fazer o seguinte. " Apenas nada demorei horas kkkk"
class Programador extends Pessoa { private String linguagem; public Programador(String nome, int idade, String Linguagem){ setPessoa(nome, idade); this.linguagem = Linguagem; } @Override public void showInfo(){ super.showInfo(); System.out.println(linguagem); } }
Responder
Clique aqui para fazer login e interagir na Comunidade :)