質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

Q&A

解決済

8回答

5861閲覧

「上位クラス」って、どっち?

kaputaros

総合スコア1844

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

継承

継承(インヘリタンス)はオブジェクト指向プログラミングに存在するシステムです。継承はオブジェクトが各自定義する必要をなくし、継承元のオブジェクトで定義されている内容を引き継ぎます。

0グッド

0クリップ

投稿2019/07/23 05:56

編集2019/07/24 04:45

すみません、
とってもJavaの基本的なことなんですが、、、、、

"上位クラス" とは "親クラス" の方に向かうこと? "子クラス" の方に向かうこと?

どっちがどっちか曖昧になってしまっていて、、、。

一緒に仕事している方がよく使ってるのですが、
どうやら子クラス(拡張されたクラス)の方を「上位」と呼んでいるようで、
自分の認識と違っていたので、質問させていただきました。

何分、Javaから長期離れていたもので。。。
大変お目汚しな質問なのですが、回答お願いいたします。


【追記】2019/07/24 13:45
皆さん、いろんな意見ありがとうございました。
軽く考えていたんですが、いろんな見方があって、解釈の仕方も結構違うもんなんだなと
改めて思いました。

ベストアンサー、すごく迷いました。。。
みなさんにつけたい・・・(笑)
とても勉強になりました!!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2019/07/23 05:59

「上位クラス」という言葉はどこで知ったのでしょうか?
kaputaros

2019/07/23 06:04 編集

一緒に仕事している方がよく使ってくるのですが、どうやら子クラスの方を「上位」と呼んでいるようで、自分の認識と違っていたので、質問させていただきました。 ググってみたものの、どちらの意味でも使用されているようで、混乱しており。。。 あ、質問のところにも、コチラ追記しておきますね。
fuzzball

2019/07/23 06:06

上位クラスを子クラスの意味で使っているサイトの一例を挙げて下さい。
m.ts10806

2019/07/23 06:08

子なのに上位ってよくわからないですね。 あくまで「super」で呼び出されるクラスだという認識です。(なので必ず親) もう少しその方に意図を確認してみたほうが良いかもしれません。
hentaiman

2019/07/23 06:12

低級言語と高級言語みたいな感覚で言ってるんですかね?コアに行くほど低級(下位)って感覚で使ってそうですね。
kaputaros

2019/07/23 06:22

> fuzzballさん だいぶ検索して履歴を再度漁るのに時間がかかってしまうため、割愛させてください。 すみません。 > mts10806さん 自分もその認識です。 確かに、直接どういう意味か聞いてみるのが一番かもしれませんね。 > hentaimanさん おぉ、なるほど。 C言語等も勉強なさったことがあるそうなので、その考え方はあるかもしれません。
hentaiman

2019/07/23 06:52

Cは分からないけど、コアに近付くほど下層レイヤーという考えは一般的だと思うので、おかしいと言い切れる程ではないかもしれないけど、単純に「親が下で子が上」って言葉だけ聞くと違和感感じまくりなんでやっぱり個人的には「親が上位、子が下位」です。
Zuishin

2019/07/23 06:59

上位も下位も定義されていないなら方言に属するものではないかと。
Zuishin

2019/07/24 04:34 編集

キャッシュに残っていたのを投稿してしまったので削除
kaputaros

2019/07/24 04:40

> Zuishinさん 最後の、たまたま見てしまいました(笑) 色々情報ありがとうございます!!
guest

回答8

0

ベストアンサー

通常クラスの階層図は基底クラスを上に、派生クラスを下につなげていきます(なので一番上にはもっともシンプルな Object クラスがくる)。
ですので普通に考えれば「上」は親クラスです。

多分ですがその同僚の方は、「上位」=「より機能が優れた」という意味で使っているのではないでしょうか。そうであるならば確かに子クラスの方が上位に思えるのかも知れません。

まあ、解釈が違いやすい言葉は使わずに、「親子」とか「基本・派生」とか言い分けた方がよいような気もします。
※英語では superclass, subclass なので、従属関係が分かりやすくて間違わないかとは思いますが

投稿2019/07/23 06:29

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2019/07/24 04:20

回答ありがとうございます。 解釈の観点がひとそれぞれに分かれる言葉だったんですね。 無意識に使っているから、つい、みんなもそうだ、と思い込んでしまう^^;
guest

0

Java言語仕様書を依るとSuperclassSubclassで呼び分けられており、上位クラス下位クラスと言う分け方はされていないように読めます。
よって、上位クラスが親と子どちらを指しているかは本来分からないと思います。

上位クラスが何を指すか、感覚で答えるとするならばクラス階層の上位であるスーパークラス基底クラス親クラス抽象クラスを私は想像します。

個人的には上位クラス下位クラスという呼び分け方だと、何に対する上位下位(クラス階層が上のもの?抽象度の高いもの?)かが一見判別つかないため、やはり下記のような聞きなれた言葉を使うのが望ましいですね。

  • スーパークラスサブクラス
  • 基底クラス派生クラス
  • 親クラス子クラス
  • 抽象クラス具象クラス

投稿2019/07/24 04:12

BluOxy

総合スコア2663

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

クラスなど概念的なものを対象とする文脈においては、より抽象度の高い方を上位と呼ぶと思います。

しかしアーキテクチャ階層図などを考える場合
より低レイヤーなものを下に考え、その上で動いてるアプリや拡張実装を上に積み上げていくイメージを描くことが多いので、扱う対象次第ですかね。

投稿2019/07/24 03:47

編集2019/07/24 03:51
mitsu-wan

総合スコア136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2019/07/24 04:25

回答ありがとうございます。 扱う対象次第、確かにそうですね。
guest

0

多分、**"親" **だと思います。
OOPの存在意義は、「抽象化」だから、より上位の抽象 (つまり「さらに抽象度の高い」)クラスだと思いますよ。

ただ、考え方によっては確かに"子"の方だとも解釈できなくもないですね。
多分その人は、「継承によって拡張した」クラスとして認識している可能性が高いですね。

投稿2019/07/23 07:23

BeatStar

総合スコア4958

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2019/07/24 04:26

回答ありがとうございます。 多分、ソレ、ですよね。 認識合わせが必要そうです。
guest

0

ドキュメントを読むと必ずそのクラスの継承関係が出ます。やっぱり継承元が上に来るので継承元、つまり親クラスが上位クラスですね。

投稿2019/07/23 06:25

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2019/07/24 04:26

回答ありがとうございます。 自分もswordoneさんと同じ認識でした。
guest

0

子クラスのインスタンスを親クラスの型にキャストすることを「アップキャスト」と呼ぶので、やっぱり親の方が上だと思いますよ。

投稿2019/07/23 06:22

ku__ra__ge

総合スコア4524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2019/07/24 04:17

回答ありがとうございます。 アップキャストとダウンキャスト!! なるほど、それ、とても分かりやすいですね。
guest

0

継承元(親クラス)が「上位」だと思います。

投稿2019/07/23 06:08

nskydiving

総合スコア6500

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2019/07/23 06:23

回答ありがとうございます。 自分もnskydivingさんと同じ認識です!
guest

0

上位クラス(super class)とは。

クラス階層において上位に位置するクラス

投稿2019/07/23 05:58

編集2019/07/23 05:58
m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaputaros

2019/07/23 06:25

早々の回答ありがとうございます。 mts10806さんと認識は同じでした。 こちらのサイト、たしかに調べたときにありました!
m.ts10806

2019/07/23 07:06

>kaputarosさん 私はとりあえず検索して上位3つくらいで判断します(それでもだめならキーワード変えることもあります) > Zuishinさん 間違ってはなさそうな気がする・・。けど「ん?」と一瞬なりますね。 できれば「静的」って言葉を使ってほしい気がします(私の理解に間違いがなければ・・)
Zuishin

2019/07/23 07:09

Oracle のドキュメントでも top level class はありましたが、upper level はありませんでした。そもそも派生ツリーをもって上位下位と呼ぶものではないのかもしれません。
kaputaros

2019/07/24 04:38

> Zuishinさん そもそも派生ツリーをもって上位下位と呼ぶものではないかも。。。深いですね。 > mts10806さん Wikipedia!その発想はなかったです。
m.ts10806

2019/07/24 04:39

kaputarosさん 時々荒らされたり100%正しい内容ではないこともありますが、 参考程度には見れると思います(もちろん最も良いのは公式のドキュメントです)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問