たけいせい


バインディング


バインド(binding)とは、プログラムで使用されるコンポーネントの実際の値または構成を決定する動作を指す.
すなわち,種々の値が決定され,これ以上変更できない制約状態となる.
バインドは2つに分けることができます.
  • 静的バインディング:実行時間の前に発生し、実行時間に一定のバインディングを維持します.
  • 動的バインディング(Dynamin binding):実行時間に完了または実行時間に変更されたバインディング.
  • 静的バインディングはEarly Bindingと呼ばれ、動的バインディングはLallyBingと呼ばれます.

    たけいせい


    多形性は、メソッドまたはクラスがある場合、異なる方法で動作することを意味します.
    多形性は大きく二つに分けられる.
  • Overloading
  • Overrriding
  • Overloading


    同じ関数名を持っていても、パラメータの数、タイプ、順序が異なる場合は、コンパイラが異なる関数として認識することを意味します.
    これは、同じ名前または異なるコンテンツを持つ関数を記述し、コンパイラがその関数名を解析する過程で他の関数に分類するため、静的バインドに属することを意味します.
    void Func() { ... }
    void Func(int x) { ... }
    void Func(float x) { ... }
    void Func(int x, int y) { ... }

    Overriding


    オブジェクト向けプログラミングでは、サブクラスまたはサブクラスは、スーパークラスまたは親クラスのいずれかによって提供された方法を特定の形式で実現する言語の特徴を提供します.
    これは、クラスを継承する方法を他のコンテンツとして再定義し、実行時にバインドを決定し、動的バインドに属することを意味します.

    C++

    class Base {
        ...
        virtual void Func() { ... }
    }
    
    class Derived : public Base {
        ...
        void Func() { ... }
    }

    C#

    class Base {
        ...
        public virtual void Func() { ... }
    }
    
    class Derived : Base {
        ...
        public override void Func() { ... }
    }

    Java

    class Base {
        ...
        public void func() { ... }
    }
    
    class Derived extends Base {
        ...
        @override
        public void func() { ... }
    }

    Python 3

    class Base:
        def func(self):
            pass
    
    class Derived(Base):
        def func(self):
            pass