Pra quem já está habituado com os conceitos de orientação a objetos e é um programador Java não irá ter muitos problemas para começar a programar em C#, porém temos alguns pontos que devemos chamar a atenção.
Resposta:
Namespaces x Packages
Os dois conceitos são basicamente o mesmo, porém em Java a estrutura dos pacotes refletia diretamente na estrutura dos diretórios, em C# isso não é necessário.
O que aconteceu com o super?
Nada, apenas mudaram o nome para base.
namespace br.com.negocio {
public class Visitante { // Essa classe pode estar no diretório /src/negocio
// ou em qualquer outro.
public Visitante(){
base();
}
...
}
}
Como faço herança em C# ?
Em C# não temos mais a palavra reservada extends e implements, tudo é feito através do ':' na própria assinatura da classe.
C#:
| public class MinhaClasse : SuperClass
|
| {
|
|
|
| } |
Como faço para sobrescrever um método ?
Através da palavra reservada overrides, porém tem um pequeno detalhe, em Java todos os métodos podiam ser reescritos, salvo exceção os métodos com o modificador final, em C# todos os métodos são considerados final, você precisa explicitamente dizer que vai sobreescrever o método usando a palavra reservada virtual.
C#:
| public virtual void facaAlgo(){
|
|
|
| }
|
|
|
| public overrides void facaAlgo(){
|
|
|
| } |
O que aconteceu com os getters e setters?
Em C# temos a introdução de um novo conceito, as propriedades, elas que são responsáveis por atribuir e retornar o valor de um atributo. As propriedades são basicamente "métodos capados", pois podemos fazer processamento dentro delas mas ela não pode receber paramêtros explicitamente, porém temos acesso a todos os atributos que a visibilidade daquela instância lhe permite.
C#:
| public class minhaClasse
|
| {
|
| int _inteiroA = 4;
|
|
|
| public int inteiroA
|
| {
|
| get { return _inteiroA; }
|
| set { _inteiroA = value; }
|
| }
|
|
|
| public int inteiroAmaisDois
|
| {
|
| get { return _inteiroA + 2; }
|
| }
|
|
|
| public void Main(string[] args)
|
| {
|
| minhaClasse c = new minhaClasse();
|
| Console.WriteLine(c.inteiroA); // 4
|
| Console.WriteLine(c.inteiroAmaisDois); // 6
|
| c.inteiroA = 1;
|
| Console.WriteLine(c.inteiroA); // 1
|
| }
|
| } |