2016-12-11 8 views
0

インターネットを検索して、基本クラスと派生クラスの概念を理解していました。私は、派生クラスに基本クラスのすべての変数とメソッドが含まれているか、または派生クラスが基本クラスの変数とメソッドを参照しているかどうかという疑問があります。Javaベースクラスと派生クラスの理解

クラスをBaseクラスから継承し、派生クラスのオブジェクトを作成すると、派生クラスオブジェクトは、基本クラスオブジェクト+独自の変数とメソッドを含むコンテナとして機能しますか? Baseクラスのオブジェクトはインラインでコピーされていますか?スーパークラスメソッドsuper.setValues(10,20)を呼び出すと、スーパークラスが呼び出され、値を設定してこれらの値をインラインでコピーしますか?

私はコードの内部動作について混乱していますか?誰か説明していただけますか?私はあなたが静的に型付けされた言語での派生クラスをインスタンス化するとき、最も低いレベルに行く、それを理解したよう

おかげ Gauri

+0

ベースと派生はC#でより一般的に使用されますが、javaは親クラスと子クラスによく似ています –

+2

もっと読む – GurV

答えて

0

は、それは子クラスからメモリに区切られた親クラスとメモリに格納されます。インスタンスにアクセスするときは、どのタイプのデータを取得するかに基づいて、インスタンスのメモリ領域全体またはメモリのベース部分領域と同じメモリ領域にアクセスします。ただし、派生クラスでオーバーライドされる場合は、基本クラスメソッドが派生クラスを指します。

これは良い答えではありません。OOP環境で働いている間、私の記憶に残っているのはそれだけです。

いずれにしても、あなたはSOの答えで今まで以上にOOPを明確にするのに役立つたくさんの文献があります。

0

クラスを拡張するとき、派生クラスは実際に基本クラスからメソッドを継承します。派生クラスオブジェクトには、派生クラスとスーパークラスのすべてのメソッドと変数が含まれます。ただし、メソッドをオーバーライドする これは、派生クラスに最優先権があることを意味します。コンパイラが派生クラスでそのメソッドを見つけなかった場合は、基本クラスをチェックインします。

super.setValues(10,20)は、superキーワードを使用しているため、スーパークラスメソッドを呼び出します。スーパーキーワードなしで使用すると、まず派生クラスをチェックインします。

関連する問題