[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 10884] Re: インターフェ ースについて
--- Kazuya Maebashi <PXU00211@xxxxxxxxxxx> からのメッセージ:
> 前橋です。
>
> 村山@netgeneさん:
> >余談ですが
> >C#の場合staticフィールドはインスタンス変数から参照できません。
> >例:
> >--C#--
> >public class Hoge{
> > public static String TABLE_NAME = "hoge";
> >}
> >public class Test{
> > public static void main(String[] args){
> > Hoge hoge = new Hoge();
> > hoge.TABLE_NAME;///←ここでエラー
> > }
> >}
>
> C#は出始めの頃にちょっと勉強したきりですっかり忘れてますが、
>
> >でもとっても不便です。
>
> これができなくて不便だという状況を想像できません。
> 「Hoge.TABLE_NAME」と書けばすむ話じゃないかと思います。
>
> どうせ、インスタンスによって参照するフィールドを切り替える
> ようなことはJavaでもできないんですし。
すいません・・・
例が悪かったです。
言いたかったことは、C#ではインスタンス変数でstaticフィールドが参照できない
ということです
(javaでは可能だがC#は不可例)
interface Hoge{
String getTableName();
}
class Moge implements Hoge{
public static String TABLE_NAME = "HOGETBL";
public String getTableName(){
return TABLE_NAME;
}
}
class Rage implements Hoge{
public static String TABLE_NAME = "RAGETBL";
public String getTableName(){
return TABLE_NAME;
}
}
public class Test {
public static void main(String[] args){
Hoge h1 = new Moge();
Hoge h2 = new Rage();
print(h1);
print(h2);
}
void print(Hoge h){
System.out.println(h.getTableName());
}
}
もちろん、Moge.TABLE_NAMEという形でも使いたいという前提です。