Hoje eu estava vagando pelo fórum do CSDN e encontrei um post como "Acabei de ver algumas linhas de código requintado de um mestre de artes marciais, e não consegui descobrir, espero que você possa me dar alguns conselhos" Atitude de aprender com todos os mestres de artes marciais, vejo depois de terminar o post inteiro, descobri que o conteúdo é muito clássico.
tipo
TStringGridex = classe (tStringGrid);
Procedimento TForm1.Button1Click (remetente: TOBJECT);
Começar
Se tStringGridex (StringGrid1) .RowCount> 5 então
TStringGridex (StringGrid1) .Deleterow (5);
fim;
-------------------------------------------------------- --------
Este é o código para remover uma linha de código no StringGrid. Eu trabalhei nesse problema por 2 horas, mas não consegui resolvê -lo. Mas por que tStringGridex = classe (TStringGrid); Obviamente, é também um TStringGrid herdado, o mesmo que o TStringGrid? Minha cabeça é muito grande! Espero que você me dê alguns conselhos!
O acima é o conteúdo da pergunta do pôster. Delphi.
1. Os membros protegidos do TStringGridex podem ser acessados no TForm porque são definidos na mesma unidade.
2. Os membros protegidos do TStringGrid não podem ser acessados no TForm porque não são definidos na mesma unidade.
3. Desde tStringGridex = classe (tStringGrid), acessando o membro protegido do tStringGridex aqui é equivalente a acessar o membro protegido do TStringGrid
4. O TStringGridex é apenas um intermediário, e sua função não se estende, mas introduz o escopo do TStringGrid nessa unidade, para que o TForm possa acessar os membros protegidos do TStringGrid.
A visão de Zhangmenyi é que os membros protegidos e privados de Delphi são visíveis para várias classes e objetos na mesma unidade, e os membros protegidos podem ser visíveis na unidade da subclasse de membro, então o TStringGridex apenas herda . ser aberto. Também podemos ter um vislumbre das características orientadas a objetos de Delphi.
Embora seja conveniente para o desenvolvimento, ele pode confundir iniciantes
Nem mesmo rigoroso o suficiente
Mas de qualquer maneira, Delphi não está mais na glória, vamos apenas usá -la
Comentário de Zhang Men San: não há coisa perfeita! Existem apenas coisas que são adequadas!
Comentário de Zhangmen 4: O método protegido é geralmente oculto; portanto, é impossível gerar diretamente uma instância da classe, mas em Delphi, a classe localizada na mesma unidade é automaticamente considerada uma classe de amigos e pode acessar seu método protegido , para que você possa ver o método protegido escrevendo uma implementação de subclasse na unidade correspondente.