親クラスでpublic宣言されたメソッドは、子クラスでprivate宣言し直すことはできない

Kazzzさんのblogに書かれていた下記の記事に興味を持ってちょっと調べてみたのがはじまりです。

WebBrowserコントロールとTextプロパティ - Kazzzの日記

WebBrowser メンバー (System.Windows.Forms)を見ると、Textプロパティは下記のように書かれています。

このコントロールでは、このプロパティはサポートされていません。(WebBrowserBase から継承されます。)

なんでしょう、サポートされていませんって?だったら、メンバにいれなければいいのにと思いませんか?それでちょっと調べてみたのですが、どうやら下記の掲示板でのやり取りを読む限り、親クラスでpublic宣言されたメソッドを、子クラスでprivate宣言し直すことはできないようです。

「C# 特定のプロパティへの外部からのアクセスを隠蔽したい」(1) Insider.NET − @IT

例えば、下記のように書くとインテリセンスにはたしかにTextプロパティは表示されないのですが、なぜかコンパイルエラーにはなりません。

string a = webBrowser1.Text;

追記 Kazzzさんからコメントがあり、インテリセンスに出てこないのは、EditorBrowsableAttributeという属性でEditorBrowsableState.Neverと宣言しているからではないかとのこと。なるほど、インテリセンスのサポート有無も属性で指定できるんですね。むしろ指定できなかったら困りますね。
少々推測が入りますが、protected宣言してあるけども暗黙のキャストが行われ、継承元のTextプロパティにアクセスするという動きになっているのではないでしょうか。
つまり、System.Windows.Forms.Control::get_Text()メソッドにアクセスしているということです。

Kazzzさんのblogでこの件の正解と思われる内容を書いてくださっています。是非こちらをご参照ください。

WebBrowserコントロールとTextプロパティ(その2) - Kazzzの日記