>>53
俺はアセンブラわからんのでCで説明させてくれ。
オブジェクト指向の基本は、データと、そのデータを処理する手続きを一緒くたにして管理することから始まるんだ。

#include <stdio.h>
typedef struct tagA{
void (*func)( tagA*pThis );
int data;
} A;
void print_A1( A*pThis ){ printf( "Hello %d\n", pThis->data ); }
void print_A2( A*pThis ){ printf( "Goodbye %d\n", pThis->data ); }
A gen_A1( int num ){ A result = { print_A1, num }; return result; }
A gen_A2( int num ){ A result = { print_A2, num }; return result; }
int main(void){
A a = gen_A1( 10 );
a.func( &a ); // ★1
a = gen_A2( 20 );
a.func( &a ); // ★2
{
A b = a;
b.func( &b ); // ★3
}
return 0;
}

★1と★2を見比べてくれ、まったく同じプログラムなのに出力結果は違う。新しく自分でgen_A3()を作れば、さらに違う動作をさせることも出来る。
★3も見てほしい、bにaを代入して関数を呼ぶと、★2と同じ結果が得られるんだ。もしデータと手続きを二元・三元管理していたら、手間が増えちゃって大変さ。

データと手続きをまとめた型Aをクラスといい、実際にその情報が格納されているaやbをインスタンス(実体)といい、データを処理するための手続きであるfuncをメソッド(手段)、aを初期化するために使ったgen_A1のような手続きをコンストラクタ(建築家)と呼んでる。
★1と★2のように、呼び出すコンストラクタによって振る舞いが代わることを利用して継承(すでにある機能を利用しつつさらに拡張したり異なった処理をすること)を行うんだ。場所が無いから継承については誰かに譲るよ。