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

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

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

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

Q&A

解決済

2回答

1496閲覧

java

satanosaka18419

総合スコア37

Java

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

1グッド

0クリップ

投稿2015/09/17 00:23

基本的なことかもしれませんが、
import ~とpublic class main implements ~の違いがわかりません。

・importは他のクラスを継承してそのクラスの機能を使える
・implementsはインターフェースを実装してそのインターフェースの機能を使える

お互い機能を継承することが目的という、この解釈はあっていますでしょうか?
import とimplements の違いを教えていただきたいです。

退会済みユーザー👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

importについて
本来ある.javaファイルで使用するクラス名は,自身の属するパッケージとjava.langパッケージのクラス以外は,パッケージ名からすべて記述しなければなりません(完全限定名).
そのパッケージ名を省略するために,使用する完全限定名のクラスをimportで宣言しているのです.
継承しているわけではありません.

implementsについて
インタフェースをクラスに実装するための記述です.implementsしたインタフェースで宣言しているメソッドをすべてオーバーライドしなければコンパイルエラーになります.
インタフェースをimplementsしたクラスのオブジェクトは,その「インタフェース型」としても扱うことができるようになります.

なお,継承はextendsです.

投稿2015/09/17 00:42

swordone

総合スコア20651

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

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

satanosaka18419

2015/09/17 01:05

回答ありがとうございます^^ そういうことだったんですね! すみませんが、継承と実装の違いも教えていただきたいです。 implementsもextendsもどちらもそれに含まれる機能を使うことができるという解釈はあっていますでしょうか?
swordone

2015/09/17 01:12

そうですね.違いはextendsはクラスを継承するのに対し,implementsはインタフェースを実装するということです. 継承は1つのクラスからしかできません(extendsのあとに付けられるクラスは1つだけ)が,実装はいくつでもできます(implementsのあとにインタフェースはいくつでも付けられる). インタフェースの実装によって,継承関係にないクラスが同じインタフェース型で画一的に扱うことができるようになります.
satanosaka18419

2015/09/17 01:19

違いは後に付けれる数なんですね。 では継承と実装という言葉は呼び名が違うだけでほぼ同じ意味ということになりますよね?
swordone

2015/09/17 03:00

ちょっと改めて聞かれると自信がないですが・・・ 対象が違うだけで目的はほぼ同じだと思います.
argius

2015/09/17 03:18

横から失礼します。 インターフェイスは、Java8になって「デフォルト実装」を書ける機能が加わったので意味合いが違ってきてしまいましたが、本来はインターフェイスには実装が無く、その名の通り「インターフェイス」だけがあるものでした。 実装を引き継ぐわけではなく、そのインターフェイスを実装する、という意味なので、class Main implements XXXは「XXXを実装するMainクラス」となり、継承とは異なります。 (実装を持たない抽象クラスを書くことができるので「実装が無い≠インターフェイス」になりますが、普通はそんなことしません。) 本質的な違いはswordoneさんが書かれているように、extendsは単一しか行えないけれどimplementsは複数のインターフェイスを付けられるというところです。 ただし、ややこしいのはインターフェイスのインターフェイスへの継承は interface XXX extends YYY, ZZZのように複数つけられるところです。
guest

0

Javaでのimportは、パッケージ名を省略するための仕組みで、継承とは無関係です

たとえば、java.util.concurrent.locksパッケージにReentrantLockというクラスがありますが、いちいちフルに書いていると長いので、それを省略できるようにする機能です。

java

1//importなし 2 3java.util.concurrent.locks.ReentrantLock someLock; 4 5public void someMethod(java.util.concurrent.locks.ReentrantLock lock){ 6 //中身は省略 7} 8 9//importした場合 10 11import java.util.concurrent.locks.ReentrantLock; 12 13ReentrantLock someLock; 14 15public void someMethod(ReentrantLock lock){ 16 //中身は省略 17} 18 19

投稿2015/09/17 00:36

maisumakun

総合スコア145183

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

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

satanosaka18419

2015/09/17 00:59

import は省略の機能だったんですね! 回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問