JAVAプログラミングについて詳しいやつこい!!!!!

レベル
Professional programmer engineer working writing code at his big desk with multiple displays and laptop computer. Modern colorful flat style vector illustration isolated on white background.
スポンサーリンク
1: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 15:58:19.083 ID:2zBz2hGJp
クラスとインスタンスとコンストラクタについてらわかりやすくせつめいしてくれ
わけわからんわ

引用元: ・JAVAプログラミングについて詳しいやつこい!!!!!

78: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:18:45.441 ID:4bbwmKpX0
>>77
>>76

108: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 21:18:51.796 ID:QZ5L95340
>>101
もう別に>>1も居ないしいいんだけど
それクラスとインスタンスが分からないって人にする説明ではないよなぁ…

147: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 23:39:42.235 ID:4bbwmKpX0
……というわけで>>1>>144まではよろしいか?

3: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 15:58:55.215 ID:7N6hJZUhH
じゃあ俺にはPythonのイテレータとジェネレータについて教えてくれ

4: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 15:59:10.711 ID:2QT+V8D1r
「クラスが車で、インスタンスがベンツ」みたいなクソ説明だけはしないでくれよ

7: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 16:00:33.521 ID:cRYu3iID0
正義の心で怒る人たちは、なぜ幸せになれないのか。
http://mynews.cocinimi.ga/gz/20181024000293

8: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 16:00:40.026 ID:f8AVINQCa
アンサイクロペディアのオブジェクト指向読んでこい

10: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 16:01:28.117 ID:IY+1mS3O0
道具の便利さって使って初めて分かると思うのよ

12: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 16:03:37.959 ID:2zBz2hGJp
フィールドってんなんだよ

14: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 16:13:58.992 ID:yySKItoXd
教科書読めよ

22: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 16:41:52.621 ID:2zBz2hGJp
>>21
やっぱコンストラクタだけわからんわ、

25: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 17:42:29.635 ID:olNZD8O1M
じゃあお前今から犬なって命令がコンストラクタ

38: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 18:00:14.503 ID:Pv/81n2Jd
>>37
勘違いしてるかもしれない
状況としては「インスタンス生成したもののコンストラクタによるメンバー変数の初期化に不備があって、そのメンバー変数を参照する関数を呼び出したときにエラーを出す」という話

43: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 18:29:53.139 ID:4bbwmKpX0
>>42
オブジェクト生成はコンストラクタの仕事じゃないんだからこの際全く関係ないだろ

48: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 18:39:23.290 ID:4bbwmKpX0
>>45
「コンストラクタについて」であって「newについて」ではないのだから、メモリ確保は終わった後の話をするのが正解

73: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:12:14.505 ID:4bbwmKpX0
まずひとつ言えることは、俺は>>43で間違ったことを言ってた、ってことだ
「オブジェクト生成はコンストラクタ『だけ』の仕事じゃない」が正しかった

81: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:26:34.000 ID:HkPelrVZ0
>>76
newでメモリが割り当てられるというのは確かにそうか
しかし、クラスとインスタンスとコンストラクタという質問に対して
オブジェクト生成のタイミングについて記述しないのは不適切だし
コンストラクタを呼び出したタイミングでオブジェクトが生成されると回答するのが正しいと思うがな
コンストラクタの役割はオブジェクトの生成だよ

99: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 20:08:01.931 ID:HkPelrVZ0
>>96
デフォルトコンストラクタ任せにするときはnullに初期化されると認識すべきだろ

SmallTalkは全然知らないんだがこれとか見ると
http://swing.fit.cvut.cz/projects/stx/doc/online/english/getstart/tut_2.html
初期のオブジェクト指向ではコンストラクタ内で変数を割り当てていたみたいだな

つまり

constructor(int i) {
int attribute;
attribute = i;
}

だったものが

class Class {
int attribute;

constructor(int i) {
attribute = i;
}
}

に進化したようだ

本来的にはコンストラクタがメモリ割り当ても行っていたんだと思うぞ

102: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 20:55:54.022 ID:4bbwmKpX0
>>99
コンストラクタを呼び出した時点で既にnull初期化されてるわけだから、
nullに初期化されるのはコンストラクタの仕事じゃなくて、コンストラクタを呼び出す側の仕事だと思うわけよ
ユーザー定義関数としてのコンストラクタでないというだけで、広義のコンストラクタの仕事ではあると思うが

それが真実であれば、つまりコンストラクタは本来的には現代におけるnewを含む処理で、
現代ではメモリ確保関連が自動化されているというだけだ、ってことか
だが「メモリ割り当ても行なっている」んだとすれば、コードは

constructor(int i) {
 this = malloc(sizeof(int));
 this.i = i;
}

とかになるんじゃね?

107: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 21:15:41.147 ID:4bbwmKpX0
>>104
あとはフィールド定義時に代入してるやつも、デフォルトコンストラクタでもデータ初期化されるパターンではあるな
ただ、俺は「super呼び出しとか定義時代入とかはコンストラクタの前で行なわれるけど、それはコンストラクタ以前の初期化処理では?」と思っている

>>105
別のアプローチで、
Cfrontではthisに代入できるから、Cfrontでは(別途デフォルトのメモリ確保はあれ)メモリ確保もコンストラクタの役割の一つではあった、
とは言えそうだ

110: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 21:25:15.582 ID:HkPelrVZ0
>>107
superを明示的に記述して引数を渡せばsuper()は呼び出されないんだからそれは違う

メモリ確保をコンストラクタが行うかどうかは実装依存だな

105: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 21:10:09.310 ID:HkPelrVZ0
>>102
後半についてはSmalltalkがどうなっているかは自信なくなってきたが

constructor(int i) {
int attribute;
attribute = i;
}

的に記述する言語もあるようだからメモリの割り当てをコンストラクタが行ってはならないという理由はない
int i;
だって明らかにメモリが割り当てられているんだからmallocじゃないとメモリが割り当てられないことはない

44: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 18:34:02.495 ID:Pv/81n2Jd
>>42
たしかに意識したことはなかったけどコンストラクタの中身の1行目より前だってことはなんとなくわかる

49: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 18:40:52.305 ID:4bbwmKpX0
>>46
new演算子を呼び出した際にオブジェクトが生成され、
オブジェクト生成には「メモリ領域の確保」と「メモリ領域の初期化」の2つの段階がある
コンストラクタはメモリの初期化しか行なわないので、その認識が普通だとしたらお前が間違っている証拠

60: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 18:52:30.216 ID:HkPelrVZ0
>>59
日本語で頼む
何を言いたいのか謎

62: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 18:54:02.981 ID:4bbwmKpX0
>>60
コンストラクタはオブジェクト構築のために呼ばれるが、
コンストラクタだけがオブジェクト構築のために呼ばれるわけではない

おk?

70: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:08:32.506 ID:HkPelrVZ0
>>68
お前の訳でも
new→コンストラクタ呼び出し→オブジェクト生成
となってるじゃんwww

自己解決してよw

31: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 17:52:13.473 ID:NFHYYzNLd
それは単にぬるぽでは

54: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 18:46:36.236 ID:PwcWc64Y0
すげー早口でやりあってそう

57: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 18:48:58.280 ID:PwcWc64Y0
そして置いてかれる1

67: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:01:55.621
コンストラクタはクラスに含まれるべきじゃないんだ
クラスを設計図と呼ぶならコンストラクタはクラスに含まれているから、設計図の一部で製造をしてるということになる
設計図の一部とは、取りも直さず図である。図に製造ができるか? 頭大丈夫か?

コンストラクタはクラスから分離されるべきだ
便宜上クラスの中に一緒に書いちゃった方がいいというだけで
コンストラクタはクラスの一部であろうものか

71: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:09:02.680 ID:MjUahBEcd
>>67
コンストラクタは製造手順書

80: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:24:13.856 ID:MjUahBEcd
[[ Clas alloc ] init]

83: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:30:32.479 ID:okHcm06Aa
まぁコンストラクタは生成時に初期化の為に必ず呼び出されるメソッドだって認識しとけばいいと思うけどな

85: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:36:49.451 ID:vgNQiESEa
アローの利点がよく分からない
そんなにみんなfunction書きたくないの?

88: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:42:20.620 ID:4bbwmKpX0
>>85
JavaScriptのことなら、functionを使うとthisが変わるから嫌、というのがある
もちろんthisを変えたい場合はfunctionを使わなくてはならない

90: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:48:46.049 ID:MjUahBEcd
関数のインスタンス

92: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:52:30.406 ID:tLTp/fMH0
継承:ある商品をグレードアップして新商品を作る

95: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 19:56:35.105 ID:CLKJ83ab0
Javaってそんな変な言語なの
僕はjavaしか知らないけどこんなもんなのかなって思っちゃってたよ
このあとpythonとかやると痛い目みるのかな

100: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 20:31:40.388 ID:QZ5L95340
コンストラクタなんて初期化関数って認識でいいだろ
newしたときってトリガーで呼ばれる関数で別に何もしなくてもいいけど

特定のクラス変数に初期値を与えたいって場合には初期値を設定するってだけ

112: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 21:28:17.627 ID:4bbwmKpX0
つーかCfrontに言及するならC++なんだから、
operator newせずにコンストラクタだけ呼ぶケースがあるに決まってんじゃねーか俺w
普通にグローバル領域なりスタック領域なりにメモリ構築してコンストラクタだけ呼べるわw

114: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 21:45:32.037 ID:HkPelrVZ0
結論としては少なくとも
メモリ確保をコンストラクタが担当してはいけないということはない
だからコンストラクタとは?と聞かれたとき
メモリを確保するのがコンストラクタ以外にあるということを前提にすることはできない

115: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 22:36:15.904 ID:M2GGSeGz0
1やけどまだスレ残ってたんか落ちてたかと

120: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 22:51:16.127 ID:4bbwmKpX0
>>116
どうせ細かい話をするために延々やってただけだから、別に読まなくてもよかったのにw

改めて話をするから、コンストラクタがわからない以前に、お前はどこまでわかるんだ
C言語ならやったことがあるとかのレベルなのか、そもそも最初からプログラミングさっぱりわからんのか

119: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 22:47:17.918 ID:8sPex36P0
なんかレスバしててワロタ

123: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 23:01:58.640 ID:M2GGSeGz0
だいたい本に
クラスはフィールドとメソッド出てきてるみたいなこと書いてあるけど、フィールドないやつもあるやろなんやねん
全部のクラスにはあてはまらんやろ
あとなthis.ってなんやねん
だいたいthis.うんたら~のこの書き方なんやねん
わかりづらいわ

126: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 23:08:49.517 ID:QZ5L95340
>>124
C#なら何もかもオブジェクトで合ってるけど
Javaの基本型は違ったはず

144: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 23:37:01.404 ID:4bbwmKpX0
>>135続き

ところで、現実において「ブツ」というものは、同種だからといって全く同じであるわけではない
たとえば俺とお前は外見も能力も違う
だが俺もお前も人間だ

この差は当然ながら生まれた親の違いであったり育った環境の違いだったりするわけだが、
プログラマーは偉大なので、そんなに何十年・何百万円もかけることなく、最初から違いを与えた状態でブツを作ることができる
だがそのためには、「違いを与える」という処理が必要になる

ブツに違いを与えるには、2つのアプローチがある
ひとつは、最初にブツを作り、後から違いを与える方法
もうひとつは、最初から違うように作る方法
どちらも同じものが出来上がるという点では同じだが、前者は二度手間になるのでめんどくさい
なので、『最初から違うように作る』という行為のための専用メソッドとして『コンストラクタ』という仕組みが用意されている
別に二度手間でいいと思うなら使う必要はないのだが、まあ、あるにこしたことはないよね

150: 以下、5ちゃんねるからVIPがお送りします 2018/10/25(木) 00:38:23.497 ID:JLEz+8zl0
>>149
亀レス過ぎw

129: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 23:12:26.852 ID:HkPelrVZ0
1みたいな奴に一般論を説明してもだめだと思うぞ
こういう奴には具体例だ
1はまだいるのか?

132: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 23:16:19.958 ID:M2GGSeGz0
関数っていわれても関数すらピンとこない
低学歴なんだからもっとバカにでもわかるように教えてくれ

143: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 23:31:59.279 ID:QZ5L95340
>>140
これがC言語などでは関数っていうから定着してるけど
Javaではメソッドって言われてて意味は大体同じ

134: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 23:17:22.768 ID:HkPelrVZ0
オンラインのショッピングサイトのカートを管理する場合で考えよう

商品クラスとカートクラスがある
商品の情報としてどういうものが必要?
カートの情報としては?
カートと商品の操作としては?

142: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 23:31:19.172 ID:HkPelrVZ0
>>138
お、いい感じ

商品クラス
 商品名
 価格

商品クラスは商品にはどんな情報があるかなーとかの情報を持ってる
んで、商品名とか価格は属性とかフィールドとか呼ぶ
商品クラスが持っている情報

んで、うまい棒とかの具体的な商品はインスタンスとかオブジェクトと呼ぶ

カートについては商品を選んで注文する過程でどんな使い方をするか考えろ

139: 以下、5ちゃんねるからVIPがお送りします 2018/10/24(水) 23:27:01.161 ID:QZ5L95340
>>134
そういうのって距離と速さと時間の関係が分かってない小学生にいきなり文章問題解かせようとするようなもんだよ
思考の基盤が出来上がる前に考えさせようなんて無駄な事

レベル
スポンサーリンク
りょうたろうをフォローする
スポンサーリンク
プログラミングまとめ速報ちゃんねる

コメント

タイトルとURLをコピーしました