Golang-オブジェクト指向プログラミングの3つの特性-継承、多重継承

オブジェクト指向プログラミングの継承のGolang-3つの機能

  継承の基本的な紹介と概略図

    継承により、コードの再利用を解決し、プログラミングを人間の思考に近づけることができます。
    複数の構造に同じプロパティ(フィールド)とメソッドがある場合、これらの構造から構造(Studentなど)を抽象化し、同じプロパティとメソッドを構造に定義できます。

    他の構造では、これらの属性(フィールド)とメソッドを再定義する必要はなく、Student匿名構造をネストするだけです。[回路図を描く]

      

 

 

 

    つまり、Golangでは、構造体が別の匿名構造にネストされている場合、この構造は匿名構造のフィールドとメソッドに直接アクセスできるため、継承機能を実現できます。

  ネストされた匿名構造
    タイプの基本文法 Goods構造体{

      名前文字列

      Price int
    }
    type Book struct {
      Goods //これは、ネストされた匿名構造ですGoods Writer文字列
    }

ケース
    継承を実現するためにネストされた匿名構造を使用してextends01.goを改善しました。そのようなプログラミングの利点に注意してください

    

 

 

 

タイプStudent struct { 
	Name string 
	Age int 
	Score float64 
} 
func(student * Student)ShowInfo(){ 
	fmt.Printf( "student name =%v age =%v grade =%v \ n"、student.Name、student.Age 、student.Score)
} 
func(student * Student)SetScore(score float64){student.Score 
	= score 
} 
type Pupil struct { 
	Student 
} 
func(pupil * Pupil)Testing(){ 
	fmt.Println( "試験の内容は異なります、テスト中..... \ n ")
} 
タイプGraduate struct { 
	Student 
} 
func(大学院* Graduate)Testing(){ 
	fmt.Println("試験の内容が異なり、試験が進行中..... \ n ")
}

  

  継承はプログラミングに利便性をもたらします

    1)コードの再利用性が向上しました
    2)コードのスケーラビリティと保守性が向上しました

  継承の詳細な議論

  1)構造は、ネストされた匿名構造のすべてのフィールドとメソッドを使用できます。つまり、大文字または小文字のフィールドとメソッドを使用できます。【イラスト】

    

 

 

   2)図に示すように、匿名構造のフィールドアクセスを簡略化できます。

    

    上記のコードの要約
    (1)bを介してフィールドまたはメソッドに直接アクセスする場合、実行プロセスは次のようになります。たとえば、b.Name
    (2)コンパイラーは、最初にbに対応する型がNameであるかどうかを確認し、ある場合は直接Bを呼び出します。タイプ
    の名前フィールド(3)がない場合は、Bに埋め込まれた匿名構造体Aに移動して、名前フィールドが宣言されているかどうかを確認します。宣言されている場合は、検索を続行しない場合はそれを呼び出します。見つからない場合は、エラーを報告します。

  3)構造体と匿名構造体が同じフィールドまたはメソッドを持つ場合、コンパイラーは最も近いアクセス原理を使用してアクセスします。匿名構造体のフィールドとメソッドにアクセスする場合は、匿名構造体の名前で区別できます[例]

    

  4)構造が2つ(またはそれ以上)の匿名構造に埋め込まれている。たとえば、2つの匿名構造に同じフィールドとメソッドがある(同時に、構造自体に同じ名前のフィールドとメソッドがない)場合、アクセス時に匿名性を明示的に指定する必要があります。構造名、それ以外の場合はコンパイルエラー。【イラスト】

    

  5)構造体が名前付き構造をネストしている場合、このパターンは組み合わせです。組み合わせ関係である場合、組み合わせた構造のフィールドまたはメソッドにアクセスするときは、構造の名前を指定する必要があります
  6)ネストされた匿名構造本文の後に、構造体変数(インスタンス)を作成するときに各匿名構造体フィールドの値を直接指定することもできます

 

 

       

      

 

   

  演習構造の匿名フィールドは、基本データ型、それにアクセスする方法、次のコードが出力するものです

     

    説明
      1)構造体にint型の匿名フィールドがある場合、2番目にすることはできません。
      2)複数のintフィールドが必要な場合は、intフィールドの名前を指定する必要があります

 

  オブジェクト指向プログラミング-複数継承
    複数継承の説明
      構造体が複数の匿名構造をネストする場合、構造はネストされた匿名構造のフィールドとメソッドに直接アクセスできるため、多重継承を実現できます。    多重継承の使用を説明するためのケースによる
    ケースのデモ

      

    多重継承の詳細
      1)埋め込まれた匿名構造が同じフィールド名またはメソッド名を持っている場合、アクセス時に匿名構造タイプ名で区別する必要があります。[ケースデモ]
      2)コードの簡素化を確実にするために、多重継承を使用しないことをお勧めします

 

おすすめ

転載: www.cnblogs.com/Essaycode/p/12677629.html