ちょっとした疑問なんですが、
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class test extends HttpServlet{
HttpServletクラスを継承していて、
上ではjavax.servlet.http.*;をインポートしていますが、HttpServletクラスは、javax.servlet.http.HttpServletですよね?
importでクラスを使うのと、extendsでクラスを扱うのとはどう違うのでしょうか?
その違いがわかなくてどうも納得いきません。
どなたか教えていただけないでしょうか?
よろしくお願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No.1の補足ですが
kintaro987さんはimportとextendが一緒だと思われているませんか?
importっていうのはNo.1で書きましたが使用クラスの宣言ですので、importで宣言されたクラスを使用するにはインスタンス生成しなければなりません。
extend(継承)ですが親クラスのメソッドをインスタンス生成無しで使用できる(厳密には違いますがわかりやすく言うと)ということですね。
java.io.FileWriter fw = new java.io.FileWriter("C:\test.text");
のことですがimportでjava.ioパッケージを指定しないときの方法ですね。
///importあり///////////////////////////////////////////
import java.io.*;
public class Sample1{
…
public void fileWrite{
FileWriter fw = new FileWriter("C:\test.text");
}
}
///importなし////////////////////////////////////////////
public class Sample1{
…
public void fileWrite{
java.io.FileWriter fw = new java.io.FileWriter("C:\test.text");
}
}
上と下が一緒の意味ってことで。
参考URL:http://park.ruru.ne.jp/ando/work/who/html/cc.html
No.2
- 回答日時:
「ちょっとした疑問」と言われていますが、Javaの根幹に関わることですね。
それが分かっていないというのは、他人事ながら少々心配です。
まず、importはそのクラス(種類)を使いますよという宣言です。例えば
import myclass.Kanrengaisha;
class Eigyoubuin {
・・・
}
となっていたら、Eigyoubuinという種類に関するアクションに関して、
myclass.Kanrengaishaという種類を使いますということです。
ここでKanrengaishaクラスと言ったら、それは、myclass.Kanrengaishaクラスを意味します。
ただし、Eigyoubuinという種類とKanrengaishaという種類はあくまで別物ですので、
Eigyoubuinという種類ではKanrengaishaという種類に属する道具(メソッド)をそのまま使うことはできません。
Kanrengaishaという種類の人(インスタンス)にお願いしてやってもらうことになります。
これに対し、extendsはクラス(種類)を拡張することを意味します。
class Eigyoubuin extends Shain {
・・・
}
となっていたら、Eigyoubuinという種類はShainという種類を拡張したものです。
言い換えると、Shainの一種なのです。
ですので、Shainという種類に属する道具(メソッド)は、許可されていれば(private宣言されていなければ)
そのまま使うことができます。
・・・あまり分かりやすい例えじゃなかったかな。
No.1
- 回答日時:
importとextendはまったく別物です。
importではクラスを使うのではなくパッケージ(クラス)指定の際に使用します。
この場合のHttpServletをextendしている際に
import javax.servlet.http.*;の記述がないとすると
public class test extends javax.servlet.http.HttpServlet
というように[パッケージ名.クラス名]という指定をしなければなりません。
またインポートの記述がないとクラスを使用する際にパッケージ名の指定までしなければいけません。
例:java.io.FileWriter fw = new java.io.FileWriter("C:\test.text");
java.langパッケージは省略可能です。(StringとかObjectクラスですね。)
この回答への補足
どうもありがとうございます。
すみません、okure_donchanの例で、
java.io.FileWriter fw = new java.io.FileWriter("C:\test.text");
とありますが、ioパッケージは継承しないでimportだけで、FilWriterと使えるのはなぜでしょう?
HttpServletの話でいけば継承しないとインポートだけではjava.io.FileWriterとなってしまうということになりますよね?
こんなバカな私ですが、もう一度教えていただければ幸いです。よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラス間でのデータ参照
-
Tomcatのpropertiesファイルの...
-
無名パッケージからのインポート
-
C#にて別クラスの関数を使いたい
-
C++でfriendクラスにしているの...
-
import と extends について
-
c++,ある関数のクラスから別の...
-
関数内の変数に<summary>コメン...
-
Java
-
C#のクラスライブラリでメッセ...
-
C#で処理中の状況をStatusLabel...
-
親クラスから子クラスへアクセス。
-
アブストラクトとインターフェ...
-
Class内で他のClassの定義
-
内部クラスのインスタンスを外...
-
JTableのイベント取得方法
-
Java throwとthrowsの違いについて
-
型Containerのメソッドadd(S...
-
ネストしたenumへのリフレクシ...
-
「タイプ初期化子が例外をスロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
クラス間でのデータ参照
-
C#にて別クラスの関数を使いたい
-
構造 他のクラスの構造体を別...
-
c++,ある関数のクラスから別の...
-
C#のクラスライブラリでメッセ...
-
C++でfriendクラスにしているの...
-
Java リフレクションについて
-
ひとつのファイルにクラスは1つ?
-
C#でほかのファイルにある自作...
-
範囲外の数値を代入したらエラ...
-
無名パッケージからのインポート
-
java-別クラスの変数の使い方を...
-
import と extends について
-
C# インターフェイスの実装
-
親クラスから子クラスへアクセス。
-
a href="..." とServlet
-
継承したクラス側のクラス名の取得
-
Java
-
JSPでbeanプロパティ(配列)を...
おすすめ情報