drigo 0 Denunciar post Postado Dezembro 8, 2010 Olaa, Sou iniciante em C#, e estou estudando OO. Entendi perfeitamente o conceito de Overriden.Devido ao entendimento teórico peguei no site do MSDN o exemplo abaixo para estudar, mas alguns pontos não ficaram claros, minhas dúvidas estão destacadas em vermelho no código abaixo: class TestClass { public class Square { public double x; public Square(double x_) { this.x = x_; } public virtual double Area() { return x * x; } } class Cube : Square { // DÚVIDA(01): // PORQUE O CONSTRUTOR DA SUBCLASSE ESTÁ ESCRITA DESSA FORMA, OU SEJA, PORQUE // O ELEMENTO " : base(x)" FOI USADO DESSA FORMA ?? public Cube(double x) : base(x) { } public override double Area() { return (6 * (base.Area())); } } public static void Main() { double x = 5.2; Square s = new Square(x); // DÚVIDA(02): // PORQUE O CONTRUTOR DA SUBCLASSE FOI CHAMADO DESSA FORMA ?? // QUAL A REAL NECESSIDADE DE FAZER "Square c = new Cube(x)" ??, OU SEJA, QUAL A // LOGICA NO USO DE "Square c = new Cube(x)" ?? Square c = new Cube(x); Console.WriteLine("Área do Quadrado= {0:F2}", s.Area()); Console.WriteLine("Área do Cubo = {0:F2}", c.Area()); Console.ReadKey(); } } Desde já, Agradeço. Atenciosamente. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Dezembro 8, 2010 Teorias não é meu forte, mas vamos la. Na primeira dúvida, o base significa a classe base dele que é a classe que ele esta herdando, já informando o valor do construtor dela. E ja respondendo a segunda pergunta, repare que no construtor da classe Square ele espera um parametro de entrada, que é o x nos dois exemplos. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
drigo 0 Denunciar post Postado Dezembro 13, 2010 Olaa, Muito obrigado pela sua atenção.Mas estive estudando o exemplo e testando as seguintes alternativas: Alternativa 1) public static void Main() { Cube c = new Cube(x); } Tem como resultado 162.24. e Alternativa 2) public static void Main() { Square c = new Cube(x); } Tem como resultado 162.24. O resultado é o mesmo, entendi todas as suas palavras, mas não ficou claro ainda o critério para uso de " Square c = new Cube(x)". Novamente muito obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
drigo 0 Denunciar post Postado Dezembro 16, 2010 problema resolvido ... obrigado pela atenção... Compartilhar este post Link para o post Compartilhar em outros sites