.NET ヘルプ

C# 継承(開発者のための仕組み)

イントロダクション

C#の主な特徴の1つである継承は、オブジェクト指向プログラミング (OOP) 原則の強力なサポートで知られています。 スケーラブルで効果的なコードを書くために不可欠です。 この投稿では、C#の継承のトピックを探り、C#プログラムでPDFを扱うのを簡単にする強力なライブラリであるIronPDFライブラリの実際の使用例に重点を置きます。

C#とnumの使い方; 継承

  1. 新しいC#コンソールプロジェクトを作成

  2. 基底クラスを作成し、いくつかのメソッドを追加します。

  3. 新しい派生クラスを作成し、クラスを継承します。

  4. 基本クラスで利用可能な関数/メソッドを呼び出します。

  5. 操作を処理してオブジェクトを破棄します。

C#における継承:概要

オブジェクト指向プログラミング (OOP) の重要な概念の一つは継承であり、これによりクラス(派生クラスまたはサブクラス)が他のクラス(基底クラスまたはスーパークラス)の特性や特徴を引き継ぐことができます。 C#では、継承はコロン(:)記号の後に基底クラス名を置くことで達成されます。

単一継承

C#では単一継承がサポートされているため、クラスは1つの基底クラスからのみ継承できます。 単一の基本クラスの機能を増強したい場合に、最も基本的な継承の種類である複合継承を利用します。

class Animal { /* Base/ Parent class */ }
class Dog : Animal { /* Derived class */ }
class Animal { /* Base/ Parent class */ }
class Dog : Animal { /* Derived class */ }
Friend Class Animal
End Class
Friend Class Dog
	Inherits Animal

End Class
$vbLabelText   $csharpLabel

階層継承

いくつかのクラスがベースクラスを共有し、階層的な継承スキームによりそれらを継承しています。 複数の派生クラスが継承する単一ベースのクラス。 その目的に応じて、派生クラスごとに固有のさらなる特性がある場合もあります。

class Animal { /* Base class */ }
class Dog : Animal { /* Derived class */ }
class Wolf : Animal { /* Derived class */ }
class Animal { /* Base class */ }
class Dog : Animal { /* Derived class */ }
class Wolf : Animal { /* Derived class */ }
Friend Class Animal
End Class
Friend Class Dog
	Inherits Animal

End Class
Friend Class Wolf
	Inherits Animal

End Class
$vbLabelText   $csharpLabel

多重継承

クラスは、マルチレベル継承において、基本クラスと派生クラスの両方として機能します。 その結果、各クラスがその前のクラスの特性を拡張して、継承の連鎖が形成されます。

class Animal { /* Base class */ }
class Mammal : Animal { /* Derived class */ }
class Dog : Mammal { /* Derived class  */ }
class Animal { /* Base class */ }
class Mammal : Animal { /* Derived class */ }
class Dog : Mammal { /* Derived class  */ }
Friend Class Animal
End Class
Friend Class Mammal
	Inherits Animal

End Class
Friend Class Dog
	Inherits Mammal

End Class
$vbLabelText   $csharpLabel

インターフェース継承

C#のクラスは、1つ以上のインターフェイスを実装し、単一の基本クラスから継承することができます。 これは、クラスがインターフェイスに記述されたメソッドの実装を継承することを可能にし、これによりある種の多重継承を実現します。

interface ILogger
{
    void Log(string message);
}
class ConsoleLogger : ILogger //child class
{
    public void Log(string message)
    {
        Console.WriteLine(message);
    }
}
class FileLogger : ILogger
{
    public void Log(string message)
    {
        // Log to file
    }
}
interface ILogger
{
    void Log(string message);
}
class ConsoleLogger : ILogger //child class
{
    public void Log(string message)
    {
        Console.WriteLine(message);
    }
}
class FileLogger : ILogger
{
    public void Log(string message)
    {
        // Log to file
    }
}
Friend Interface ILogger
	Sub Log(ByVal message As String)
End Interface
Friend Class ConsoleLogger 'child class
	Implements ILogger

	Public Sub Log(ByVal message As String) Implements ILogger.Log
		Console.WriteLine(message)
	End Sub
End Class
Friend Class FileLogger
	Implements ILogger

	Public Sub Log(ByVal message As String) Implements ILogger.Log
		' Log to file
	End Sub
End Class
$vbLabelText   $csharpLabel

抽象クラスとメソッド

C#では、抽象クラスは他のクラスの基底クラスとして機能し、それ自体でインスタンス化することはできません。 抽象クラスの役割は、その派生クラスに共有のインターフェースと一連の関数を提供することです。 それは、その派生クラスが実装する必要がある属性とメソッドを定義したモデルまたはテンプレートとして機能します。 インターフェイスは、C#が提供する機能です。 インターフェースを介して複数の継承が実質的に可能になり、クラスが複数の契約を実装できるようにします。

抽象クラスを使用して、ベースクラスに一つ以上の抽象メソッドを定義することができます。 その後、これらの抽象メソッドには、派生クラスによって具体的な実装が提供されなければなりません。

abstract class Shape
{
    public abstract double Area(); // Abstract method
}
class Square : Shape
{
    public double Radius { get; set; }
    public override double Area()
    {
        return Math.PI * Math.Pow(Radius, 2);
    }
}
abstract class Shape
{
    public abstract double Area(); // Abstract method
}
class Square : Shape
{
    public double Radius { get; set; }
    public override double Area()
    {
        return Math.PI * Math.Pow(Radius, 2);
    }
}
Friend MustInherit Class Shape
	Public MustOverride Function Area() As Double ' Abstract method
End Class
Friend Class Square
	Inherits Shape

	Public Property Radius() As Double
	Public Overrides Function Area() As Double
		Return Math.PI * Math.Pow(Radius, 2)
	End Function
End Class
$vbLabelText   $csharpLabel

これらはC#における継承の応用例の一部に過ぎません。 コードベースの柔軟性の意図した度合い、クラス間の関係、そして設計目標はすべて、選択されるメソッドに影響を与えます。

IronPDF

.NETライブラリIronPDFは、プログラマーがC#言語を使用してPDFドキュメントを作成、編集、変更することを可能にします。 HTMLからPDFを生成する、HTMLをPDFに変換する、PDFドキュメントを結合または分割する、既存のPDFにテキスト、画像、注釈を追加するなど、PDFファイルを使った様々なタスクを可能にする様々なツールと機能がIronPDFライブラリによって提供されています。 IronPDFについて詳しく知るには、IronPDF ドキュメントを参照してください。

IronPDF をインストール

IronPDFライブラリを取得する 次回のパッチにはそれが必要です。 これを行うには、次のコードをパッケージ マネージャーに入力します:

Install-Package IronPDF 
//or 
dotnet add package IronPdf
Install-Package IronPDF 
//or 
dotnet add package IronPdf
SHELL

C# 継承(開発者向けの仕組み): 図 1 - パッケージ マネージャー コンソールを使用して IronPDF パッケージをインストールし、次のコマンドを入力します: 「Install-Package IronPDF」または「dotnet add package IronPdf」。

別のオプションとして、NuGet Package Managerを使用して「IronPDF」パッケージを探すことができます。 IronPDFに関連するすべてのNuGetパッケージの中から、必要なパッケージをこのリストから選択してダウンロードすることができます。

![C# 継承 (開発者向けの仕組み): 図 2 - NuGet パッケージマネージャーを使用してIronPDFパッケージをインストールすることもできます。 「ironpdf」というパッケージを参照タブで検索し、最新バージョンのIronPDFを選択してインストールします。

継承クラスでのIronPDF

IronPDFという機能豊富なライブラリは、C#でPDFドキュメントを取り扱うのを簡単にするために作成されました。 IronPDFを継承クラスと統合することで、アプリケーションの機能を向上させ、PDFの作成、操作、その他を簡単に行うことができます。

IronPDFを使用した継承の利点

  • 組織化されたコードの編成: クラス階層を確立することにより、継承は組織化されたコードの編成を助長します。 IronPDFを統合してPDFを処理するための専用クラスを作成し、清潔で整理されたコードベースを維持することができます。
  • コードの再利用: 基底クラスから継承するクラスにより、コードの再利用が可能になります。 これは、IronPDFのようなライブラリを使用している場合に特に便利です。なぜなら、一般的なPDF関連の機能を再利用可能な基本クラスにカプセル化して、アプリケーションの他の領域で再利用できるからです。

    PdfDocumentの機能を拡張し、特にIronPDF統合のために、IronPdfDocumentというクラスを作成しましょう。

using IronPdf;
public class IronPdfDocument : PdfDocument
{
    // Additional properties or methods specific to IronPDF can be added here
    public void ConvertToPdf()
    {
        // Code to convert the HTML to PDF using IronPDF
           var Renderer = new IronPdf.HtmlToPdf();
           var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, World</h1>");
           PDF.SaveAs("Output.pdf");
    }
}
using IronPdf;
public class IronPdfDocument : PdfDocument
{
    // Additional properties or methods specific to IronPDF can be added here
    public void ConvertToPdf()
    {
        // Code to convert the HTML to PDF using IronPDF
           var Renderer = new IronPdf.HtmlToPdf();
           var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, World</h1>");
           PDF.SaveAs("Output.pdf");
    }
}
Imports IronPdf
Public Class IronPdfDocument
	Inherits PdfDocument

	' Additional properties or methods specific to IronPDF can be added here
	Public Sub ConvertToPdf()
		' Code to convert the HTML to PDF using IronPDF
		   Dim Renderer = New IronPdf.HtmlToPdf()
		   Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, World</h1>")
		   PDF.SaveAs("Output.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronPdfDocumentは、PdfDocumentから派生した強化された例です。 このクラスはIronPDFを簡単に操作するために設計されています。 PDF関連の機能を簡単に扱うために、特定の属性やメソッドを使用することができます。 IronPDFの機能詳細については、IronPDF機能ページを参照してください。

PDFレポートジェネレーターの構築

これらのアイデアを実践に移し、継承とIronPDFを利用して基本的なPDFレポートジェネレーターを作成しましょう。 まず、レポートの基本クラスを使います:

public class Report
{
    public virtual void GenerateReport()
    {
                var Renderer = new IronPdf.HtmlToPdf();
                var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, World</h1>");
                PDF.SaveAs("Output.pdf");
    }
}
public class Report
{
    public virtual void GenerateReport()
    {
                var Renderer = new IronPdf.HtmlToPdf();
                var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, World</h1>");
                PDF.SaveAs("Output.pdf");
    }
}
Public Class Report
	Public Overridable Sub GenerateReport()
				Dim Renderer = New IronPdf.HtmlToPdf()
				Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, World</h1>")
				PDF.SaveAs("Output.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

次に、基本クラスから派生し、IronPDF機能を追加する派生クラスPdfReportを作成しましょう。

public class PdfReport : Report
{
    public override void GenerateReport()
    {
        var Renderer = new IronPdf.HtmlToPdf();
        var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF</h1>");
        PDF.SaveAs("Output.pdf");
        Console.WriteLine("Generating PDF report...");
        // Additional code specific to PDF generation using IronPDF
    }
}
public class PdfReport : Report
{
    public override void GenerateReport()
    {
        var Renderer = new IronPdf.HtmlToPdf();
        var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF</h1>");
        PDF.SaveAs("Output.pdf");
        Console.WriteLine("Generating PDF report...");
        // Additional code specific to PDF generation using IronPDF
    }
}
Public Class PdfReport
	Inherits Report

	Public Overrides Sub GenerateReport()
		Dim Renderer = New IronPdf.HtmlToPdf()
		Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF</h1>")
		PDF.SaveAs("Output.pdf")
		Console.WriteLine("Generating PDF report...")
		' Additional code specific to PDF generation using IronPDF
	End Sub
End Class
$vbLabelText   $csharpLabel

上記の例は、TitleプロパティとGenerateReport関数が、基底クラスであるReportクラスからPdfReportに継承されていることを示しています。 新しいプロパティ「Author」を追加し、IronPDFを使用したPDFレポート生成のために、独自のロジックによってGenerateReport関数をオーバーライドします。 以下は、コードから生成された出力PDFです。

C# 継承(開発者向けの仕組み): 図3

HTML文字列をPDFに変換するコードについて学ぶには、HTMLからPDFへの例を参照してください。

結論

ライブラリのようなIronPDFと組み合わせると、継承はアプリケーション開発プロセスを強化する強力な機能です。 ここでは、継承の基礎について説明し、IronPDFと統合するための便利な方法についても紹介しました。

階層的なクラス構造の開発は、モジュラーでよく構造化されたコードベースをもたらします。 クラスを開発する際に、基本クラスの幅広い機能を継承しつつ、特定のタスクに対応させると、コードの拡張性や再利用性の利点が明らかになります。 C#アプリケーションでPDFドキュメントを管理するためのシームレスなソリューションを提供するIronPDFが統合されると、これらの利点はさらに高まります。

IronPDF の $749 ライトパックには、恒久的なライセンス、アップグレードオプション、および長期間のソフトウェアサポートが含まれています。 透かしの入った試用期間中、クライアントは本物のアプリケーション設定で製品を評価することができます。 IronPDF の価格設定、ライセンス、および体験版について詳しく知りたい場合は、IronPDF ライセンスページをご覧ください。 公式のIron Softwareウェブサイトを訪れて、他のIron Software製品に慣れ親しんでください。

チペゴ
ソフトウェアエンジニア
チペゴは優れた傾聴能力を持ち、それが顧客の問題を理解し、賢明な解決策を提供する助けとなっています。彼は情報技術の学士号を取得後、2023年にIron Softwareチームに加わりました。現在、彼はIronPDFとIronOCRの2つの製品に注力していますが、顧客をサポートする新しい方法を見つけるにつれて、他の製品に関する知識も日々成長しています。Iron Softwareでの協力的な生活を楽しんでおり、さまざまな経験を持つチームメンバーが集まり、効果的で革新的な解決策を提供することに貢献しています。チペゴがデスクを離れているときは、良い本を楽しんだり、サッカーをしていることが多いです。
< 以前
C#リンター(開発者のための動作方法)
次へ >
C# ランダム整数(開発者向けの動作方法)