[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 12/14 09:14 / Filesize : 60 KB / Number-of Response : 231
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★★Java質問・相談スレッド166★★



1 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 10:55:55.50 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 (p)ttp://www.wikiroom.com/java/?path,classpath
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※

前スレッド
★★Java質問・相談スレッド165★★
toro.2ch.net/test/read.cgi/tech/1382265039/

2 名前:デフォルトの名無しさん [2013/12/06(金) 11:29:54.92 ]
他の言語ではなく、Javaが選択される理由を教えてください

3 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 11:30:48.82 ]
学習に最適

4 名前:デフォルトの名無しさん [2013/12/06(金) 19:26:23.36 ]
教えてください

宣言と生成についてわかりません

例えば
class A{

}

class B{

}


static void main{

A a = new A();
B b = new A();

}

aとbの違いがわかりません。
右辺の生成はわかるのですが、
宣言の意味合いがよくわかりません。
教えてください
すみません、初心者です!

5 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 19:28:06.23 ]
なんだこれ

6 名前:デフォルトの名無しさん [2013/12/06(金) 19:31:00.56 ]
変ですか?

7 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 19:35:14.58 ]
うん。まあ、細かいことはおいといて。聞きたいのは変数宣言と生成の違い?

8 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 19:36:02.27 ]
いつも new するとは限らないから、宣言と生成は違う
String a = new String();
String b = "hello";
String c = System.getProperty("os.name");
String d = b + c;

9 名前:デフォルトの名無しさん [2013/12/06(金) 20:04:45.21 ]
変数宣言と生成の違いというより、
宣言について曖昧なのかもしれません。

上のaとbの文は、両方ともクラスAのメンバを使用できるようになりますよね。
じゃあ、宣言の違いによって何が変わるのって感じです。

素人な説明ですみません。

10 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 20:31:08.54 ]
String str1 = "hello";
String str2 = str1;

str1 → "hello" ← str2

String str1 = "hello";
String str2 = "hello";

str1 → "hello"
str2 → "hello"



11 名前:デフォルトの名無しさん [2013/12/06(金) 20:35:19.28 ]
見方がわからんw

12 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 20:37:21.36 ]
すまん、適当に書いてしまったw

13 名前:デフォルトの名無しさん [2013/12/06(金) 21:12:37.26 ]
それは生成の話ですよね。
クラス型の代入の話はわかります。

あとstringだと限定的でなかなか理解が。

僕がわからないのを言い換えると、
@クラスAで宣言したクラスAオブジェクトa
AクラスBで宣言したクラスAオブジェクト

この@とAは何が変わるのか。
同じこと言ってますよね…

14 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 21:18:24.68 ]
ポリモーフィズムの話か

15 名前:デフォルトの名無しさん mailto:sage [2013/12/06(金) 22:04:28.84 ]
質問です。
あるインターフェースを継承したインターフェースを実装する場合、
implementの記述で、後者だけでなく前者も記述しているソースを見かけるのですが、
何か意味があるのでしょうか?

言葉ではわかりにくいので例を書きますと
interface A {}
interface B extends A {}

これらがあるときに
class C implement B {}
class D implement A, B {}

この場合、CもDも同じ機能を持つことになり、Dの記述は冗長だと思うのですが
何か違いはあるんでしょうか? リファクタリング時に役にたつとかでしょうか?

16 名前:デフォルトの名無しさん [2013/12/06(金) 22:13:31.97 ]
class A{

int aa = 1;

public A(){
System.out.println("コンストラクタA");
}

public void AAA(){
System.out.println("メソッドAAA");
}
}

class B extends A{

int bb =2;

public B(){
System.out.println("コンストラクタB");
}

public void BBB(){
System.out.println("メソッドBBB");
}
}

17 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 02:10:22.02 ]
String a = new String
Object b = new String
Objectとして扱う(Objectで定義されているメソッドしか使わない)なら、bの方が依存関係を緩くできる。
b = new Integer
と、Stringでないものにしても、bはObjectとして扱われるので影響がない。

18 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 04:53:45.79 ]
>上のaとbの文は、両方ともクラスAのメンバを使用できるようになりますよね。
>じゃあ、宣言の違いによって何が変わるのって感じです。

AとB関係ない型なのに
B b = new A();
なんだこれ。

19 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 06:38:18.82 ]
>>15
開発のなりゆきでそうなっただけで深い意味はないかも。

20 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 10:22:44.79 ]
>>18
最初の「なんだこれ」はそれだった。
違和感を感じていたが誤記だろうと放置していたら本質だった。



21 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 14:33:56.07 ]
質問です。
Android SDK の Bundleクラス(Intentで使われてるやつです)のような
万能の入れ物になるようなクラスはJavaの標準では用意されていないのでしょうか?

また、ない場合に自作するとしたら、適当にプリミティブラッパ型とSerializable型を
保持するHashMapを複数持ったクラスなどで代用すれば良いでしょうか?

22 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 14:55:17.77 ]
しね

23 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 15:08:19.30 ]
ありがとうございます。自己解決しました

24 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 15:28:12.23 ]
どれが解決したかわからないという

25 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 16:05:36.11 ]
javaでFnumって、どういう使い勝手がありますか?
最初、普通に整数型かと思ったら違うかったし
引数で取ったとしてswich文での処理となると思いますし
どうなんでしょうか

26 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 16:11:59.89 ]
>>15
まぁ)avaの仕様だと思って我慢してください。
俺としては、インターフェイスの定数の保持の利点が
見いだせない。

27 名前:>>15 mailto:sage [2013/12/07(土) 19:42:31.92 ]
>>19>>26
なるほど・・・ありがとうございました

28 名前:デフォルトの名無しさん [2013/12/07(土) 20:15:37.70 ]
class A{
public void AAA(){}
}

class B extends A{
public void BBB(){}
}

public class javatest2 {
public static void main(String arg[]){
A hoge1= new A();
B hoge2= new B();
A hoge3= new B();
B hoge4= new A(); //型の不一致: A から B には変換できません ??1

hoge1.AAA();
// hoge1.BBB(); //メソッド BBB() は型 A で未定義です
hoge2.AAA();
hoge2.BBB();
hoge3.AAA();
// hoge3.BBB(); //メソッド BBB() は型 A で未定義です ??2


上の??1 と??2 がわかりません

29 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 21:12:33.22 ]
>>28
1. サブタイプはスーパータイプの一種なので互換性があるが、逆はそうではない
よく挙げられるのは動物の例

Animal hoge1 = new Animal(); // OK - 動物同士、何の問題もない
Cat hoge2 = new Cat(); // OK - ネコ同士、何の問題もない
Animal hoge3 = new Cat(); // OK - ネコは動物であるので、ネコを動物として扱っても問題はない
Cat hoge4 = new Animal(); // NG - 動物一般をネコとして扱うことはできない

30 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 21:16:52.17 ]
>>28
2. 「メソッドBBBが型Aで未定義です」のメッセージ通り、型AにメソッドBBBの定義は無いでしょ?
hoge3の型はAなんだから
hoge3が指しているオブジェクトの型ではなく、hoge3という変数自身の型だ
変数自身の型しか見ないので、hoge3が実際に何のオブジェクトを指しているか指していないかは考慮されない



31 名前:デフォルトの名無しさん [2013/12/07(土) 21:49:36.82 ]
ありがとうございます。
んーでもまだしっくりこない。
オブジェクトの型と変数の型の違いがわかりません。
というより、やっぱり、オブジェクト生成とは何か。変数宣言とは何か。
をしっかりと理解していない気がします。

32 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 22:09:48.36 ]
>>15,26
メソッドの検索順番が変わるんだよ。
クラスメソッドと違ってインタフェースメソッドは
階層が深いとこで定義されていると検索が遅くなる。

33 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 22:10:23.03 ]
違いも何も、生成したオブジェクトを自分がどのように扱うかを決めるのが宣言だろうに。

34 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 22:27:57.02 ]
>>31
1に関しては悩む点じゃないからスルー。
2はちょっと難しい。

hoge3は「A」という型で宣言されているからAに定義されているメソッド以外は呼び出せない。
ただしhoge3の「中身(インスタンス)」はnew B();で作ったのでBのメソッドを呼び出す能力は持っているはず。
こういう場合はキャストという操作でhoge3の型を変えてやればいい。

((B) hoge3).BBB();
こうすればエラーにならずBBBが呼び出せる。

35 名前:デフォルトの名無しさん [2013/12/07(土) 22:34:04.55 ]
上の
AAA hoge3 = new BBB();
では型宣言側のhoge3.AAA()はOKで、hoge3.BBB()はNGですが、

下のオーバーライドを確認するためのプログラムでは、逆の挙動が出てます。
上の例に従うとAAA hoge3=new BBB(); → hoge3.show();は、
AAA.show()が示されると思ったのですが、実際はBBB.show()でした。
難しい。。。
どなたか説明いただけると助かります


class AAA{
String a="AAA";
void show(){System.out.println("AAA.show()");}}

class BBB extends AAA{
String a="BBB";
void show(){System.out.println("BBB.show()");}}

public class javatest3 {
public static void main(String arg[]){
AAA hoge1 = new AAA();
AAA hoge2 = new BBB();
BBB hoge3 = new BBB();
hoge1.show();
hoge2.show();
hoge3.show();
System.out.println(hoge1.a);
System.out.println(hoge2.a);
System.out.println(hoge3.a);}}

36 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 22:43:22.76 ]
>>35
抽象クラスやインターフェースを使ったことあるか?
それを使えば「型とインスタンスは別」って理解できるから先にそうしろ

37 名前:デフォルトの名無しさん [2013/12/07(土) 22:51:52.02 ]
すみません、まだ趣味で初めて1週間くらいで、、、
抽象クラスとインターフェースは斜め読んだだけであまり理解してません。
とりあえず、この問題は放置して先に進んでみます。
また戻ってくるのでかまってください。
ありがとうございました。

38 名前:デフォルトの名無しさん mailto:sage [2013/12/07(土) 23:02:47.86 ]
また難しいところから攻めてるな。実際のところ、継承の乱用はタブーなんだが。

39 名前:桃白白 ◆9Jro6YFwm650 [2013/12/07(土) 23:48:33.11 ]
>>35
オーバーライドとはそういうもの
逆でもなんでもない

40 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 01:51:07.91 ]
大は小を兼ねるってことだよ。



41 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 05:59:05.92 ]
>>39
失せろカス

42 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 06:52:06.52 ]
Vector<String> ary = new Vector<String>();
ary.add("データ0");
ary.add("データ1");
ary.add("データ2");
for (int i = 0 ; i < ary.size() ; i ++) {
String str = ary.get(i);
}

というソースを実行すると、本当に稀な確立で、
ary.get(i);でArrayIndexOutExceptionが発生します。
別スレッドからaryがいじられるとかはありえないのですが
Java6でVectorにバグがある等の話はありますでしょうか?

43 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 06:57:23.21 ]
ない。
ArrayIndexOutOfBoundsExceptionではなくArrayIndexOutExceptionなんて書いている時点でまず自分を疑った方がいい。

44 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 07:10:32.69 ]
全然釣れないですね〜^^

45 名前:42 mailto:sage [2013/12/08(日) 07:43:17.85 ]
ありゃ、なんかスレ荒れてましたか
例外の名前はあいまいに覚えてたのを書きました
今は無駄っぽいので、またスレが冷静になってきたら質問します。

46 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 07:55:47.01 ]
ションベンして寝てろカス

47 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 08:31:01.74 ]
>>42
Vector使うのもいいけど
ArrayListを使うことをお勧めします

48 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 09:12:21.96 ]
結構昔から非推奨タグ付いてなかったっけVector

49 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 10:54:41.51 ]
確かに1次元のくせにベクトルとは生意気だとおもったな。

50 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 11:19:28.33 ]
全然だめですね〜^^
釣れないですです^^



51 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 11:44:52.22 ]
2次元だと行列になるのでは

52 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 12:13:38.13 ]
一成分がスカラー
二成分がベクトル
行列は一般的なものでしょ

53 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 12:34:44.11 ]
割り込みベクタって表現、ダイキライ

54 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 13:19:54.26 ]
javaでprocessingのbackgroundの様な関数を作れなくて困ってるんですがどういう風にすれば作れるか教えて頂けませんか?
抽象的で申し訳ないですが教えて下さい。

55 名前:42 mailto:sage [2013/12/08(日) 13:22:11.07 ]
そんなprocessingやってる前提で話されても・・・
ここジャヴァーのスレですし

56 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 13:28:10.28 ]
すみません…

具体的に言うと四角形を方向キーで動かすアニメーションを作ろうと思って書いてみたのですが、どうやっても前の四角形を消す事が出来ず残像?の様な感じになってしまいアニメーションにならないんです。

57 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 13:36:51.56 ]
背景と同じ色で四角形を塗りつぶせば消える

58 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 13:44:46.88 ]
>>57
四角形作って塗り潰そうと考えて作ってみたんですけど自分が作ったプログラムだと塗り潰せてないんです…そして何故塗り潰せないのかが分からなくて本当に困ってるんです。

後ここってプログラミング貼っても大丈夫なんでしょうか?

59 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 13:49:03.05 ]
プログラミング張れるのか、すごいな

60 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 14:00:28.23 ]
>>59
初心者だということを察して下さいお願いします

今から参考書買ってこようと思うんですが
、自分の質問が解決されそうな本とかって分かりませんか?



61 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 14:08:52.80 ]
すれ違い

62 名前:デフォルトの名無しさん [2013/12/08(日) 14:45:09.43 ]
その程度の質問ならどの本にも書いてあるよ

63 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 15:05:36.78 ]
そんなのは色々ゴチャゴチャチャレンジしてたら解決するよ。

64 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 15:54:39.79 ]
ゴチャゴチャチャレンジしてたら解決するようなことは質問禁止!

65 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:13:20.70 ]
ゴチャゴチャチャレンジしてたら解決するような事かどうかが判断できない時は質問OK!

66 名前:デフォルトの名無しさん [2013/12/08(日) 16:17:49.85 ]
昨日の継承の問題で、抽象クラスとインターフェイスを勉強してきたのですが、
んー、なんかその話とは違う気がする。。。
やっぱり宣言とオブジェクト生成について本質を理解しなければいけないとおもうんです
オーバーライドのところで、逆の挙動が出るということに関して、そういうものと言われましたが、
たぶん僕の言いたい事が伝わってない気がします。
言いたい事は、
最初のプログラムではhoge2はBBBメソッドは使用できないくせに、
次のプログラムではhoge2はBBBメソッドがオーバーライドで優先されて使用される。
それがなぜなのか。これを理解するためにおそらく宣言と生成の本質を理解しないといけませんよね。
プログラムを整理したのでまた載せます

67 名前:デフォルトの名無しさん [2013/12/08(日) 16:19:19.84 ]
class A{
String a="AAA";
void AAA(){System.out.println("AAAメソッド");}
}
class B extends A{
String b="BBB";
void BBB(){System.out.println("BBBメソッド");}
}
public class javatest2 {
public static void main(String arg[]){
A hoge1= new A();
A hoge2= new B();
B hoge3= new B();
hoge1.AAA();
hoge2.AAA();
// hoge2.BBB(); //メソッド BBB() は型 A で未定義です
hoge3.AAA();
hoge3.BBB();
System.out.println(hoge2.getClass());
System.out.println(hoge1.a);
System.out.println(hoge2.a);
// System.out.println(hoge2.b); //bb は解決できないか、フィールドではありません
System.out.println(hoge3.a);
System.out.println(hoge3.b);
}
}

68 名前:デフォルトの名無しさん [2013/12/08(日) 16:21:13.97 ]
実行結果

AAAメソッド
AAAメソッド
AAAメソッド
BBBメソッド
class java02.B
AAA
AAA
AAA
BBB

69 名前:デフォルトの名無しさん [2013/12/08(日) 16:23:29.72 ]
class AAA{
String a="AAA";
void show(){System.out.println("AAAメソッド");}
}
class BBB extends AAA{
String a="BBB";
void show(){System.out.println("BBBメソッド");}
}
public class javatest3 {
public static void main(String arg[]){
AAA hoge1 = new AAA();
AAA hoge2 = new BBB();
BBB hoge3 = new BBB();
hoge1.show();
hoge2.show();
hoge3.show();
System.out.println(hoge2.getClass());
System.out.println(hoge1.a);
System.out.println(hoge2.a);
System.out.println(hoge3.a);
}
}

70 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:24:52.07 ]
目がチカチカするからやめて



71 名前:デフォルトの名無しさん [2013/12/08(日) 16:24:55.63 ]
実行結果

AAAメソッド
BBBメソッド
BBBメソッド
class java03.BBB
AAA
AAA
BBB

72 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:27:32.42 ]
勉強不足

73 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:30:38.99 ]
A hoge2= new B();
クラスAのメソッドしか利用しないって意味だよ

74 名前:デフォルトの名無しさん [2013/12/08(日) 16:31:55.81 ]
勉強もほどほどになんか作ってみろよ。半年もすれば本質なんか勝手にわかる。

75 名前:デフォルトの名無しさん [2013/12/08(日) 16:33:33.87 ]
すみません。でも俺は丸一日この文とにらめっこだよ。助けてほしい。

●前者と後者で違い
前者 メソッドをオーバーライドさせず、AAA()とBBB()でメソッド名が違う
後者 メソッドをオーバーライドさせ、メソッド名show()

●hoge2の結果
前者 BBB()メソッドは使用できない。
後者 オーバーライドされBBB()メソッドが優先される。

なぜなぜ?
>>34 のキャストすればできました。そうゆう対策は知らなかったし理解できました。
そうではなく、なぜこの問題が起こるのかが知りたいです。
これを理解するには宣言と生成の本質の理解が必要と思うんですが、
どこを調べても、宣言はメモリが・・・とかそんな説明ばっかです。

76 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:34:58.63 ]
void show()←クラスAにもあるメソッド

77 名前:デフォルトの名無しさん [2013/12/08(日) 16:38:13.22 ]
勉強不足なのは間違いないけど。。。

>>73
>A hoge2= new B();
>クラスAのメソッドしか利用しないって意味だよ

でも2番目のプログラムでは、
AAA hoge2 = new BBB();
で、BBBメソッドが呼ばれたよ??

78 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:38:23.68 ]
馬鹿には無理

79 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:38:26.92 ]
A hoge2= new B();
メソッドの使用がクラスAに存在するものだけに制限されている
つまり void AAA()だけ

AAA hoge2 = new BBB();
メソッドの使用がクラスAAAに存在するものだけに制限されている
つまり void show()だけ

80 名前:デフォルトの名無しさん [2013/12/08(日) 16:41:09.15 ]
>>76
hoge2.show() で呼ばれるのは、クラスAではなくてクラスBですよ。
実行結果から見て。



81 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:42:27.07 ]
Javaでわからないことを質問するスレ
kohada.2ch.net/test/read.cgi/prog/1363851093/

82 名前:デフォルトの名無しさん [2013/12/08(日) 16:45:12.03 ]
>>79 の理屈では、
後者のプログラムではhoge2.show()の実行結果がAAAメソッドになりません?

83 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:46:48.61 ]
じゃあこうしよう

A村で生まれた子供にはAAAという笛が渡されます。
その笛を吹くとどこからともなく怪人が現れAAAと叫びます

AAA村で生まれた子供にはshowという笛が渡されます
その笛を吹くとどこからともなく怪人が現れAAAと叫びます
なぜ怪人はAAAと叫んだのでしょうか?
笛を吹いた子供がAAA村の子供だと知っているからです。

BBB村で生まれた子供にはshowという笛が渡されます
その笛を吹くとどこからともなく怪人が現れBBBと叫びます
なぜ怪人はBBBと叫んだのでしょうか?
笛を吹いた子供がBBB村の子供だと怪人は知っているからです。


とても分かりやすい説明だと思う

84 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:49:53.90 ]
追加

B村で生まれた子供にはAAAという笛とBBBという笛が渡されます。
いたれりつくせりです。

85 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:55:56.21 ]
どこのコぺペ?w

86 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 16:55:58.77 ]
おっと上ミステイクしたかもな。
追加

ある日A村で子供が生まれました。しかし驚くべきことにその子供はB村の子供だったのです。
その子供は残念なことにAAAという笛しか渡されませんでした。
その子供はAAAという笛を吹いてみました。
怪人はAAAと一言言ってさりました。
こどもは寂しい思いをしました。

次の日のことです。
AAA村で子供が生まれました。またまた驚くべきことにその子供はBBB村の子供だったのです。
その子供にはshowという笛が渡されました。
その子供はshowという笛を吹いて見ました。
怪人はBBBと叫びました。
子供は嬉しくて涙がでました。
なぜ怪人はBBBと叫んだのでしょう?
それは怪人がその子供はBBB村の血筋のものだと知っていたからです!

87 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:00:36.46 ]
・どこで生まれたかによって渡される笛がきまってしまうこと
・子供は渡された笛を吹くことしかできないこと
・同じ笛でもどの血筋の子供が吹くかで何が起こるかは変わりうること

とてもわかりやすい例えだと思う

88 名前:デフォルトの名無しさん [2013/12/08(日) 17:01:42.93 ]
ちょっとわかりにくいです。

村は 型を示すのか、オブジェクト型を示すのか

89 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:03:02.54 ]
//北斗神拳伝承者、百裂拳(メソッド)を使えます。
class Hokuto{
 void hyakuretuken(){...}
}
//北斗神拳を継承しているので百裂拳を使えます
class B extends A{}
//北斗神拳を継承、百裂拳をオーバーライドした天翔百裂拳が使えます。
class C extends A{
 void hyakuretuken(){/*空中から百烈拳*/}
}

B kenshiro = new B();
C toki = new C();

//ケンシロウ
A denshosha=kenshiro;
denshosha.hyakuretuken();//百裂拳が発動

denshosha=toki;
denshosha.hyakuretuken();//天翔百裂拳が発動

こういうことだな。

90 名前:デフォルトの名無しさん [2013/12/08(日) 17:04:00.26 ]
まちげぇた。class Hokutoをclass Aにかえてくれw



91 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:04:40.94 ]
翻訳例

AAA hoge2 = new BBB();

BBB村の妊婦さんを誘拐しました。
その子供hoge2はAAA村で生まれました。

92 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:07:31.01 ]
荒らすなカス

93 名前:デフォルトの名無しさん [2013/12/08(日) 17:14:01.95 ]
わかんねー!

94 名前:デフォルトの名無しさん [2013/12/08(日) 17:19:00.20 ]
勉強ってつまんねぇし身につかないだろ。目的がないから。
ゲーム作りたいとか目的があるプログラミングは面白いし身につく。
プログラミングにまで「勉強」を適用したら人生真っ暗だぜ。

95 名前:デフォルトの名無しさん [2013/12/08(日) 17:19:36.06 ]
>>75
A型の変数でB型のメソッドが呼べないのはあたりまえ。
メソッドがオーバーライドされてるときはサブクラスのメソッドが優先される。
そんだけ。問題があるとするならお前の頭。

96 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:27:38.30 ]
コンパイル時のメソッド名解決と実行時のメソッド名解決は、
解決される時期が全く別でな…

言語仕様15章12節嫁。

97 名前:94 [2013/12/08(日) 17:28:59.74 ]
物事の本質が見えている奴とは俺のような奴である(キリッ

98 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:29:00.78 ]
荒らすなカス

99 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:31:28.36 ]
荒らすなカスって言ってる奴がカス!

100 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:34:32.63 ]
メソッド名とメソッドの中身を切り離して考えればいい
使用できるメソッドが宣言の仕方によって制限される
メソッドの実行内容がどのインスタンスに呼ばれたかに依存する
そんだけ








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<60KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef