クラス型には数値以外にも様々なものがありまた自分で作り出すこともできます。 型を作る機能であるクラスを作ってみます。 定義クラスを定義します。
とすることで作ることができます。 また使う場合は以下のようにします。
演習1 クラス宣言LinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
フィールドクラスは内部に変数を持つことができます。 クラス内の変数のことをフィールドといいます。 クラス内で以下のように宣言すると使えるようになります。
フィールドは初期化することができます。 クラスに含まれるフィールドにアクセスするためには以下のようにします。
演習2 フィールドLinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
メソッドクラスは関数も持つことができます。 クラス内の関数をメソッドと呼びます。 クラス内で以下のように宣言すると使えるようになります。
クラスに含まれるメソッドにアクセスするためには以下のようにします。
演習2 フィールドLinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
アクセシビリティアクセシビリティはクラス内の要素をどの範囲で公開するかを指定します。 アクセシビリティ|説明 ------------|---- public |どこからでもアクセス可能 protected |クラス内部と、派生クラスの内部からのみアクセス可能 internal |同一プロジェクト内のクラスからのみアクセス可能 protected internal|同一プロジェクト内のクラス内部、または派生クラスの内部からのみアクセス可能 private |クラス内部からのみアクセス可能 何も指定しない限りprivateです。 演習3 アクセシビリティLinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
エラーコード(CSXXXXとなっているところです)を検索してみましょう。 以下の文字を入力し実行しましょう。 プロパティ通常のプログラミングではフィールドはかくしてメソッドを公開します。 なぜならメソッドの内部を書き換えることはできても、フィールドに手を加える事ができないからです。 しかしそれではただフィールドから読み出しだけや書き込みだけのメソッドが大量にできてしまいます。 そこでC#にはプロパティというフィールドの操作に似たことのできる機能があります。 クラス内で以下のように宣言すると使えるようになります。
プロパティのsetの中ではvalue変数が自動的に定義され書き込むべきデータが入っています。 演習4 プロパティLinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
またget、setそれぞれにアクセシビリティを指定することが可能です。 演習5 個別のアクセシビリティLinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
エラーコード(CSXXXXとなっているところです)を検索してみましょう。 以下の文字を入力し実行しましょう。 現実で使うと上のようにただ変数を読み書きするだけのプロパティをよく書きます。 そこで省略をすることが可能です。 演習5 プロパティの省略形LinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
継承あるクラスで定義されているものを流用して新しいクラスを作ることができます。 これを継承といいます。 継承は以下のように行います。
一度に継承できるクラスは1つです。 演習6 継承LinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
継承したクラスは継承元のクラスとして扱うことができます。 しかし使えるのは継承元のクラスの要素のみです。 演習7 継承2LinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
エラーコード(CSXXXXとなっているところです)を検索してみましょう。 以下の文字を入力し実行しましょう。 オーバーライド特定のメソッドまたはプロパティは継承先で書き換えることができます。 これをオーバーライドと言います。 特定のメソッドとはvirtualのついたメソッドです。 演習8 オーバーライドLinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
抽象継承先のクラスで定義してほしいが継承元のクラスでは定義できないということがあります。 この時はクラスを抽象クラスにします。 抽象クラスは要素が未完成のため変数にできません。 演習9 抽象クラスLinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
インターフェース継承は親クラスが様々な処理を実装しますが、そんなことせずにただメソッドやプロパティは何があればいいかを 決めるだけにしたいことがあります。この定義ができるのがインターフェースです。 インターフェースはいくらでも継承することができます。インターフェースの要素はすべてpublicです。 演習10 インターフェースLinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
型変換ある型の変数を別の型の変数にすることを型変換といいます。 型変換は安全な場合(ある数をそれより大きい数が表せる型にする、継承した型にする、型変換が定義されている)に自動で行われます。しかしそうでない場合は明示的に変換する必要があります。 演習11 型変換LinqPadのLanguageをC#Programにしておきましょう。 以下の文字を入力し実行しましょう。
以下の文字を入力し実行しましょう。
以下の文字を入力し実行しましょう。
例外を検索してみましょう。 以下の文字を入力し実行しましょう。
objectC#はすべての型が自動的にObjectを継承します。 Object型のメソッドにToString()があります。 これにより全ての変数は文字にすることができます。 |