Keywords for properties and methods on C# 1
Em linguagens orientadas a objeto temos meios de definir o acesso e uso dos elementos. Segue uma lista de algumas dessas palavras e sua funcionalidade.
- public: declara que uma propriedade/método possa ser acessado externamente, ou seja, é visível fora do objeto.
- private: oposto do public, toda propriedade/método só pode ser acessada internamente da classe.
- protected: semelhante ao private, ou seja, não é visível fora do objeto, mas é compartilhado entre seus derivados transmida hierarquicamente.
- static: um método/propriedade estática são elementos da classe em si, ou seja, não independem de sua implementação, são compartilhadas por todas e não podem ser alteradas. Em geral são constantes ou métodos que não dependem de parâmetros da classe.
Algumas outras keywords frequentemente usadas:
- virtual: um método virtual é um método que pode ser sobreposto (override); ou seja, um método non-override não poderá ser sobreposto. Uma forma de lidar com isso seria usar a keyword new method, escondendo o método base na derivada. Por default, no Java todos os métodos são virtuais e, portanto, podem ser sobrepostos. Obs: não aplicável a métodos abstratos e estáticos.
- override: declara que um método esta sobrepondo um método base – aspecto do polimorfismo – “one interface, multiple methods” (uma interface, múltiplos métodos).
- abstract: declara uma classe semi-implementada, ou seja, possui método que não puderam ser implementadas genericamente, e portanto, devem ser implementadas por seus derivados.
- interface: define uma assinatura para um tipo de dado (data type). É uma forma de dizer que todo tipo que implementa uma dada interface terá certos elementos, sempre! É muito semelhante a abstract, a diferença é que num algumas implementações já estão feitas. Outro detalhe relevante é que na herança uma classe pode apenas derivar de uma única classe base mas pode implementar quantas interfaces desejar. Todos os métodos de uma interface são públicos, um tanto óbvio.
- sealed: impede que uma classe seja herdada. Semelhante ao final no Java.