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/
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 ] メソッド名とメソッドの中身を切り離して考えればいい 使用できるメソッドが宣言の仕方によって制限される メソッドの実行内容がどのインスタンスに呼ばれたかに依存する そんだけ
101 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:47:07.32 ] コンパイル時の問題と実行時の問題を分けて理解する必要がある コンパイルエラーはプログラムをコンパイルする時のエラーであって、プログラムはまだ1行も実行されていない AAAのオブジェクトもBBBのオブジェクトも生成されていないし、 もし実行されたらそのとき変数hoge3はどんなオブジェクトを指しているであろうか、などといったことは判りはしない だからコンパイル時には、変数宣言の型だけに基づいて、実際に実行せず静的に、エラーチェックをするんだ エラーチェックを通ってコンパイルに成功したら、ようやく実行を始められる 実行時には実際にオブジェクトを生成するし、各変数がどんなオブジェクトを指してるかも判る
102 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 17:56:04.16 ] なんだか思ったよりずっと深い悩みっぽいね 言語設計のレベルの疑問なんかね そうだとしたら知らんですわ javaプログラミングに慣れてない人が突っ込む話じゃないと思うし 突っ込んだところで理解できないレベルの話だと思われる
103 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 18:02:19.70 ] 馬鹿には無理
104 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 18:05:01.80 ] >>75 これのどこが難しいの? class Car{ void drive() { System.out.println("I am just a car."); } } class HyperCar extends Car{ @Override void drive() { System.out.println("I am a hyper car."); } } class SuperCar extends Car{ @Override void drive(){ System.out.println("I am a super car."); } } Car carA = new Car(); Car carB = new HyperCar(); Car carC = new SuperCar(); carA.drive(); // "I am just a car." carB.drive(); // "I am a hyper car." carC.drive(); // "I am a super car."
105 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 18:14:42.57 ] 勉強不足
106 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 19:26:28.59 ] オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。 engawa.2ch.net/test/read.cgi/poverty/1386476617/
107 名前:デフォルトの名無しさん [2013/12/08(日) 21:06:41.95 ] こうするとコンパイルエラーです。 >>104 では、 インスタンスの型側のメソッドが使用できてるのに、下文では、宣言型に依存している。 メソッドを使用できるのはやっぱり、宣言の型側に依存するのですよね。 じゃあ右辺のインスタンスの型は何を意味するのかなって。 class Car{ void drive() {System.out.println("I am just a car.");} } class HyperCar extends Car{ void driveHyper() {System.out.println("I am a hyper car.");} } class SuperCar extends Car{ void driveSuper(){System.out.println("I am a super car.");} } public class javatext5 { public static void main(String[] args) { Car carA = new Car(); Car carB = new HyperCar(); Car carC = new SuperCar(); carA.drive(); // "I am just a car." carB.Hyperdrive(); // "I am a hyper car." carC.Superdrive(); // "I am a super car." } }
108 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 21:08:02.12 ] もうジャヴァなんかあきらめてC#やれお
109 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 21:09:55.49 ] javaのwebスクレイピングプログラムを自作しているのですが、5個のスレッドでとあるサイトに アクセスして情報を取得する処理を数日間続けると1個のスレッドが止まってしまうというような ことに悩んでおります。 原因のわかる方、見当の付く方はおられるでしょうか。
110 名前:デフォルトの名無しさん [2013/12/08(日) 21:15:43.24 ] >>109 ちんちんかゆいんですと泌尿器科に行ってちんちん見せないようなもの。 原因わかるわけないじゃん。ちんちんうpよろ。
111 名前:デフォルトの名無しさん mailto:sage [2013/12/08(日) 21:22:38.71 ] ネットワークで簡単な通信(エコーサーバーみたいなのでも)作ってる時って 根本的にネットワークの仕組み理解してないからしてサンプルプログラムに毛が生えたレベルのものでも どこかに脆弱性あるかもしれんからビクビクしてる バッファオーバーフローとかも解説読んでもピンとこない XSSとかSQLインジェクションはわかる ソフト公開してる人はセキュリティ方面にものすごく自信があるから公開してるってことなの? あれって使用者に何かあったら作成者が責められるよね?
112 名前:デフォルトの名無しさん mailto:sage [2013/12/09(月) 01:03:04.79 ] >>107 > >>104 では、インスタンスの型側のメソッドが使用できてるのに その理解は間違ってる。 「@Override」の文字通り「上書きされたCarクラスのdrive()メソッド」を呼び出しているだけだよ。 だからCarクラスに宣言されている内容しか見えない。 今回はその内容が一部上書きされているから上書きされたメソッドの結果に置き換わっただけ。
113 名前:デフォルトの名無しさん mailto:sage [2013/12/09(月) 02:29:55.28 ] >>109 スタックオーバーフローじゃないの? スレッドプールはたまに新スレッドで入れ替え直す方が良い
114 名前:デフォルトの名無しさん mailto:sage [2013/12/09(月) 18:29:40.41 ] こんにちは。プログラム初心者です(1週間くらい)。 調べてもよくわからないところがあったので質問させてください。 下記のようなコードを書いたのですが、コード下から7行目の(★)引数に関して 該当する行の引数「kei(int x, int y)」とすると、Printlinされる整数値は「8」となりますが、 引数を「kei(int a ,int b)」とすると、出力される整数値は「3」となり、 フィールド値として定義したa,bと、kei()メソッド内の、aとbは別物の変数になってるようです。 main()メソッドと、pri()メソッドは同じ値なのに、なぜkei()メソッドだけそうなるのでしょうか? よろしくお願いします。 public class sam { static int a; static int b; public static void main(String[] args){ a=3; b=5; kei(a,b); pri(); } static void kei(int x, int y){ //(★)引数に関して a=a+b; } static void pri(){ System.out.println(a); } }
115 名前:デフォルトの名無しさん [2013/12/09(月) 18:43:00.50 ] >>114 static int a; static int b; と keiの引数は別だから。
116 名前:デフォルトの名無しさん mailto:sage [2013/12/09(月) 18:44:23.85 ] 同じ名前の変数が2つあったら、より内側の方を見るから
117 名前:デフォルトの名無しさん mailto:sage [2013/12/09(月) 18:48:40.84 ] >>115 様、>>116 様、ありがとうござました!とても気分がすっきりしました 1週間くらい悶々でした。どうもありがとうございました^^!!
118 名前:デフォルトの名無しさん mailto:sage [2013/12/09(月) 19:05:06.20 ] >>111 LICENSE読めボケェ
119 名前:デフォルトの名無しさん mailto:sage [2013/12/09(月) 19:45:11.04 ] >>117 死ねよ
120 名前:デフォルトの名無しさん mailto:sage [2013/12/09(月) 20:21:13.45 ] >>119 どの辺が死に値するんだよw
121 名前:デフォルトの名無しさん mailto:sage [2013/12/09(月) 20:27:13.03 ] >>117 一生すっきりしてろカス
122 名前:デフォルトの名無しさん mailto:sage [2013/12/09(月) 22:03:18.82 ] ずぶの素人です。現在サーブレットの入門書を読みながら設定をしています。 トムキャットのほうでエラーがでてるようなのですが、以前までできてた操作ができなくなりました。例えば、以下のURLで以前までは結果がけってきてたのですが、今は帰ってきてません。 localhost:8080/entry/OracleServlet web.xmlにエラーがありそうなので、教科書と比較してみてるのですが、余分な文はいれてないように思います。 具体的にはlocalhost:8080/ ここでトムキャットのHPを映すくとはできます。 localhost:8080/entry/OracleServlet ここになると404 The requested resource is not available. となります。 エラーっぽいメッセージ WEB-INF/web.xml;の解析エラーです。 linenumber 53; columnNumber:9 XMLドキュメント構造は、同じエンティティ内で開始及び終了する必要があります。 startup.ContextConfig parseWebXml 重大:53行目の9列目で発生しました。 前のエラーのためにこのアプリケーションは利用できないようにマークします。 トムキャットのコンソールがコピペできないので、これだけで情報になるかわかりませんが、原因がわかる方いましたら、教えてもらえますでしょうか?よろしくお願いします。