Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

drigo

[Resolvido] Overriden.

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.