ぽざうねっと
ホーム
連絡をする
同期する ( RSS 2.0 )
Login
投稿数 390 : 記事 0 : コメント 936 : トラックバック 67
ニュース
さて、今年の秋は何を漬けようか
書庫
2008年10月 (2)
2008年9月 (41)
2008年8月 (17)
2008年7月 (9)
2008年6月 (19)
2008年5月 (2)
2008年4月 (10)
2008年3月 (25)
2008年2月 (37)
2008年1月 (53)
2007年12月 (2)
2007年11月 (10)
2007年10月 (7)
2007年9月 (10)
2007年8月 (2)
2007年7月 (5)
2007年6月 (12)
2007年5月 (10)
2007年4月 (19)
2007年3月 (16)
2007年2月 (23)
2007年1月 (19)
2006年12月 (31)
2006年11月 (9)
日記カテゴリ
DB >> MySQL
DB >> Oracle
DB >> SQL Server
dev >> .NET >> ADO.NET
dev >> .NET >> ASP.NET
dev >> .NET >> Forms
dev >> .NET >> Others
dev >> JavaScript
dev >> Others
dev >> Others >> Web
dev >> Ruby
dev >> Ruby >> Rails
dev >> SQL
dev >> XML
env >> Linux
env >> Windows
env >> Windows >> Vista
etc
tool
tool >> Office
Accessory
Community
Private
ついった
みくし
private なメンバを呼び出す
public class Foo { static void Main() { Bar.CallPrivateMethod(); } } public class Bar { private void SomeMethod() { Console.WriteLine("call some method"); } public static void CallPrivateMethod() { Bar bar = new Bar(); bar.SomeMethod(); } }
ちゃーんと "call some method" が表示された。
正直、今の今までできないと思ってました。
これは外部とはみなされないのか
投稿日時 : 2008年3月14日 7:17
コメント
#
re: private なメンバを呼び出す
2008/03/14 7:32
myugaru
えっと整理してみると意外と簡単です。日本語でいえば
「自分の見えるローカル範囲にはアクセス可能です。」
この日本語間違ってませんよね?
それですから
「自分の見える範囲のメソッドの呼び出し」
は常に可能です。
勘違いされてしまったのはおそらく
「ローカル定義された型の返却」
などではないでしょうか?
内部で独自にprivate定義した型やenumとかを返却値として返したりするとエラーになります。
おっしゃってる例は外部にはvoidです。
何も返さず何も見せてませんのでエラーにもなりません。
#
re: private なメンバを呼び出す
2008/03/14 8:51
なちゃ
さてさてどの部分に疑問を持ったのでしょうか…
#
re: private なメンバを呼び出す
2008/03/14 8:54
R・田中一郎
僕もなちゃさんと同じ感想を持ちました。
#
re: private なメンバを呼び出す
2008/03/14 9:16
黒龍
おそらくconstでの縛りと混同されたに一票。読み進めてて一瞬「お、よべるんや」とか思ってしまったんで。
#
re: private なメンバを呼び出す
2008/03/14 9:42
Streetw☆
気持ちがわかるから勝手に補足させてもらいます。
#違ってたらハズカシイけどw
CallPrivateMethodはBarクラスの中にはあるけど、その中での
bar.SomeMethod();
という呼び出しは、barというインスタンスの参照経由での
privateなメソッドの(外部からっぽい)呼び出しだから、
違和感があるってことですよね~
#
re: private なメンバを呼び出す
2008/03/14 9:54
泥爺
はじめまして。通りすがりました。
自分も、オブジェクト指向を学びはじめたころにはprivateのスコープを勝手に勘違いしてました。具体的には、ClassスコープではなくInstanceスコープだと思いこんでいました。
http://www.atmarkit.co.jp/fjava/rensai4/keitaijgram03/keitaijgram03_1.html
↑こんな感じで習ったので。
タイ焼きの中身(アン)は、privateなので外部から知ることができない。みたいな説明をされていました。
なので、タイ焼き自身は別のタイ焼きの中身を知ることができると知ったとき、すごく違和感がありました。
#
re: private なメンバを呼び出す
2008/03/14 10:11
Streetw☆
あ、Classスコープとか言うんですね。¢(. .。)メモメモ
#
re: private なメンバを呼び出す
2008/03/14 10:12
ghost_shell
ぼくはてっきり「Main()のアクセス修飾子がprivateでも実行できるやんけ!」かと思いました。
#
[Ruby]privateなメンバを呼び出すぞ~
2008/03/14 13:00
かずきのBlog
[Ruby]privateなメンバを呼び出すぞ~
#
re: private なメンバを呼び出す
2008/03/14 14:38
Mr.T
Staticと宣言されていた部分を読み落としていたorz
#んー?なんで、わざわざBarクラスつくるん?
#SomeMethod()そのままでエエやんかとか。
なるほど、VB.NETならSharedだから、
内部でそういう呼び方は気がつかなかった。
#
[Ruby]privateなメソッドを呼び出すぞ~
2008/03/14 18:06
かずきのBlog
[Ruby]privateなメソッドを呼び出すぞ~
#
re: private なメンバを呼び出す
2008/03/15 1:09
THREE-ONE
Streetw さん、泥爺さんのおっしゃるとおり、private なインスタンスメンバはインスタンス単位で隠蔽されるもんだと思ってました。
なので、インスタンス生成後に外部からアクセスできるように見えて不思議でした。
ん~言語のデザインな気がしますが
#
re: private なメンバを呼び出す
2008/03/15 3:18
myugaru
THREE-ONEさん、読み取れなくてすみませんでした。
なるほどインスタンス単位隠蔽言語もいいと思います!
でもそういう言語ってあるかなあ。
C、C++、VB、C#あたりはそうじゃないっぽいですね。
「これはこういうものだと丸暗記」ですかねえ。
でも言語策定者の思想しだいでどっちもアリじゃないでしょうか。
だんだん私もインスタンス単位隠蔽も悪くないって思えてきました^^
かずきさんのトラックバックによればC#は本当の意味でのprivateも呼べてしまうらしく・・・これはこれでひでぇって思いました。
こんなのは全然「アリ」じゃないっすよね!w
Post Feedback
タイトル
名前
Url:
コメント:
名前をブラウザに記憶する
Powered by:
Copyright © THREE-ONE