- PR -

クラスと継承とオブジェクトについて

投稿者投稿内容
いっさ
ベテラン
会議室デビュー日: 2005/04/18
投稿数: 83
投稿日時: 2005-04-24 20:39
オブジェクトは、
データとそれを処理する機能をもっていて、クラスと呼ばれる型から作られる。
操作の対象であり、データ(値)と処理を一つにした部品。

クラスは、
クラスはオブジェクトの雛型とか設計図と呼ばれ、変数やメソッドを定義する。

継承とは、
スーパークラスの機能を継承してサブクラスを作成することです。

という感じですか?
もっとこういう言い方した方がいいとか、足りないとかあったら教えて下さい。
aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2005-04-24 20:55
何が目的なのか(何に使うのか)、字数制限があるのかどうかさっぱり分からないで、どうですかといわれても困るのですが、1つだけ。
引用:
継承とは、スーパークラスの機能を継承してサブクラスを作成することです。


微妙な違いですが、スーパークラスが先に存在しているわけではありません。
あるクラスの機能を継承して新しいクラスを作る。
そうした場合、この新しく作られたクラスから見て、基のクラスがスーパークラスとなるわけです。

それにしても、「継承とは」を説明するのに、「継承」という文字が使われているのは妙な感じがしますけどね。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-04-24 21:47
そんな感じで大体オッケーではないでしょうか。

よく一般的にJavaでは「オブジェクト」の部分をインスタンスと言います。

イメージ的には
「犬」がクラスで、「ポチ」がインスタンスです。
で、「動物」が「犬」のスーパークラスと考えればいいかな。。。

これをソースで示すと、
コード:
動物を示すクラス
class Animal{
    public void run(){
        走る機能
    }

    public void walk(){
        歩く機能
    }
}

動物を継承した犬クラス
class Dog extends Animal{
    public void eat(String food){
        System.out.println(food + "は美味しいワン!");
    }
}

動物を継承した猫クラス
class Cat  extends Animal{
    public void eat(String food){
        System.out.println(food + "は美味しいニャー!");
    }
}

インスタンスを作って実行
public class Test{
    public static void main(String[] args){
        Dog dog = new Dog();
        dog.run();
        dog.walk();
        dog.eat();
        Cat cat = new Cat();
        cat.run();
        cat.walk();
        cat.eat();
    }
}


こんな感じのソースになります。
まずは、この辺を覚えて下さいな。

適当なプログラムを作ってみてから、動きを理解して
その後インターフェイスや抽象クラスを勉強してみてください。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-04-24 21:53
どもでふ。がると申します。
これ以上ないほど完璧に手前味噌なので非常に恐縮なのですが。
http://jibun.atmarkit.co.jp/scenter/bbs/viewtopic.php?topic=9255&forum=21&2
このURLに、その辺の用語の説明が簡単に、実も蓋もなく書いてあります(笑

ちょろっと補足をしますと。
スーパークラスは、基底クラスと同意です。

また、継承を極端に大雑把に書きますと
「とあるクラス(単数の場合と複数の場合がある点に留意)を元に、
クラス変数やメソッドなどを追加したり変更したりして新しいクラス
を作る」のが継承です。

なので、
引用:

継承とは、
スーパークラスの機能を継承してサブクラスを作成することです。


を書き換えると、
親クラスの機能に追加や修正をしてサブクラスを作成すること
といえるかと思います。
# スーパークラスは「一番元になるクラス」なので。継承で直接
# 関係するのは、直近に存在している「親クラス」です。
# また、継承の説明で「継承」という単語があるのは微妙なので、
# ここには「機能の追加や修正」という言葉を入れています

参考になればよいのですが。
いっさ
ベテラン
会議室デビュー日: 2005/04/18
投稿数: 83
投稿日時: 2005-04-24 22:02
ありがとうございます!
勉強になりました。
その辺もう少し調べてみたいと思います。
パテ太
ベテラン
会議室デビュー日: 2004/08/16
投稿数: 64
お住まい・勤務地: 千葉・東京
投稿日時: 2005-04-24 22:07
記述されている内容について不満はないのですが
カプセル化についてふれられていないのが ??? な感じがします。

オブジェクト指向といったら
・カプセル化
・継承
・他態性
だと思うのですが・・・
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-04-24 22:41
引用:

記述されている内容について不満はないのですが
カプセル化についてふれられていないのが ??? な感じがします。



まだそこまでのお話に達していないと思います。
クラスとは?インスタンスとは?の状態で、
カプセル化や多態性について突っ込みを入れるのはどうかと・・・
パテ太
ベテラン
会議室デビュー日: 2004/08/16
投稿数: 64
お住まい・勤務地: 千葉・東京
投稿日時: 2005-04-25 10:16
引用:

カプセル化や多態性について突っ込みを入れるのはどうかと・・・


つっこみを入れようと思ったわけではなくて・・・

・継承を説明するには基底クラスと派生クラスと最低 2 つの
 クラスが出てきますよね。

・多態性はクラス毎の振る舞いの差異についてなので
 説明するには 2 つ以上のクラスが出てきますよね。

・カプセル化については 1 つのクラスだけで説明ができると思うんです。
 もちろん、カプセル化の対象となるのは『他のクラス』なので
 2 つ以上クラスが出てくると言えば言えなくもないのですが・・・。

結局何が言いたかったかというと
1. オブジェクト
2. クラス
3. カプセル化 ← この場所
4. 継承
 ・
 ・
 ・
っていう順序にならない?とちょっと思っただけだったんですけど・・・。
引用:

記述されている内容について不満はないのですが


なので・・・

スキルアップ/キャリアアップ(JOB@IT)