SlideShare ist ein Scribd-Unternehmen logo
1 von 32
/ 31
【オンライン】2023年! C# Tokyo イベント
石崎 充良
継承辺りのもしかしたら
マイナーかもしれない C#
1
/ 31
自己紹介
石崎 充良 ( @mishi_cs )
C# Tokyo コミュニティ管理メンバー
GitHub:
https://github.com/m-ishizaki
blog:
https://rksoftware.hatenablog.com/
2
/ 31
今回は継承のお話し
3
/ 31
今日はクラスの継承のお話です
クラスの継承、
使っていますか?
インターフェイスの実装でなくて。
4
/ 31
クラスの継承とは
5
/ 31
インターフェイス
6
/ 31
何故インターフェイスなのか?
7
/ 31
クラスではできない
8
埼玉なの?
群馬なの?
ちなみに、できてしまうと
/ 31
インターフェイスでは
9
明示的なインターフェイスの実装
/ 31
目次
 今回は継承のお話し
 背景
 この辺りのメソッドの実装の種類
 abstract メソッド
 virtual メソッド
 interface の明示的な実装
 interface のデフォルト実装
 まとめ
10
/ 31
背景
11
/ 31
C# 11 の新機能
「ジェネリック型数値演算のサポート - インターフェイスの static virtual メンバー」
という機能が追加されました。
 インターフェイスに「 static virtual 」なメンバーが定義できます
 インターフェイスに「 static abstract 」なメンバーが定義できます
12
/ 31
こんなことができます
13
/ 31
virtual、abstract、interface の実装
14
完全に理解していますか?
私は正直、自信がないです。
/ 31
この辺りのメソッド
の実装の種類
15
/ 31
種類
• abstract メソッド
• virtual メソッド
• interface の明示的な実装
• interface のデフォルト実装
16
class での仕様
interface での仕様
/ 31
abstract メソッド
17
/ 31
abstract メソッド
 abstract クラスにしか定義できない
 abscract クラスでは実装ができない
 導出クラス (サブクラス・子クラス) では実装をしなければならない
18
プログラマによる実装漏れを言語レベルで無くしてくれる
極めて実装者への配慮にあふれた機能。
インターフェイスとテストが主流の現代ではまず見かけない。
/ 31
virtual メソッド
19
/ 31
virtual メソッド
 君は導出クラス (サブクラス・子クラス) で実装してもいいし、しなくてもいい
 virtual メソッドの宣言には実装が必要
20
プログラマによる実装の自由が認められた使い勝手の良い機能。
abstract ではなくこちらの方が見かける。
カスタマイズ可能な UI コンポーネントなどでは見かける。
virtual でも abstract でもない場合は
/ 31
interface の明示的な
実装
21
/ 31
インターフェイスの明示的な実装
 複数のインターフェイスに同じメソッドがあった場合に、どのインターフェイスの実
装かを明示して実装できる
22
インターフェイスが違えば必要な実装は違う場合もある。
そんな時でも安心安全な機能。
人気も本当に
最高なのか?
人気は千葉に
譲るかもしれない
/ 31
 インターフェイスの型から呼び出す
呼び出し方
23
普通の実装がある場合
/ 31
interface の
デフォルト実装
24
/ 31
通常、interface メソッドは実装が必要
25
/ 31
 インターフェイスに実装を書く
 インターフェイスの型から呼び出す (実装クラスの型からは呼び出せない)
デフォルト実装
26
インターフェイスに
実装がある
/ 31
実装クラスに実装がある場合
 実装クラスの型からも呼べるようになる
 インターフェイスの型から呼ばれても実装クラスの実装が呼ばれる
27
virtual メソッドに似ている。覚えやすい
/ 31
デフォルト実装と基底クラスの実装
 インターフェイスの実装とクラスの継承をしていて、基底クラスに同じメソッドが
あった場合は、基底クラスの実装が呼ばれる
28
/ 31
デフォルト実装の明示的な実装
 インターフェイスのデフォルト実装に対して明示的な実装も可能
29
/ 31
まとめ
30
/ 31
まとめ
 クラスの継承とインターフェイスの実装、完全に理解した
 インターフェイスの static virtual メンバーも怖くない
 ↓のコードも一目で理解できる
31
/ 31
ありがとうございました。
32
【オンライン】2023年! C# Tokyo イベント
石崎 充良

Weitere ähnliche Inhalte

Ähnlich wie 継承辺りのもしかしたらマイナーかもしれない C#

C# Tokyo コミュニティについて Short 版
C# Tokyo コミュニティについて Short 版C# Tokyo コミュニティについて Short 版
C# Tokyo コミュニティについて Short 版m ishizaki
 
いつでもどこでも .NET
いつでもどこでも .NETいつでもどこでも .NET
いつでもどこでも .NETYuta Matsumura
 
C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内m ishizaki
 
「アジャイル型開発におけるプラクティス活用リファレンスガイド」の勘所と活用方法
「アジャイル型開発におけるプラクティス活用リファレンスガイド」の勘所と活用方法「アジャイル型開発におけるプラクティス活用リファレンスガイド」の勘所と活用方法
「アジャイル型開発におけるプラクティス活用リファレンスガイド」の勘所と活用方法toshihiro ichitani
 
Webシステムプログラミング概要20150630
Webシステムプログラミング概要20150630Webシステムプログラミング概要20150630
Webシステムプログラミング概要20150630義広 河野
 
Android バインド ライブラリ
Android バインド ライブラリAndroid バインド ライブラリ
Android バインド ライブラリm ishizaki
 
M5Stackで授業をやってみた
M5Stackで授業をやってみたM5Stackで授業をやってみた
M5Stackで授業をやってみたJunichi Akita
 
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―Hisao Soyama
 
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)rip jyr
 
遷移図生成ツール blockdiag の紹介 @ Pycon mini JP 2011/01
遷移図生成ツール blockdiag の紹介 @ Pycon mini JP 2011/01遷移図生成ツール blockdiag の紹介 @ Pycon mini JP 2011/01
遷移図生成ツール blockdiag の紹介 @ Pycon mini JP 2011/01Takeshi Komiya
 
Xtextハンズオン(仮)
Xtextハンズオン(仮)Xtextハンズオン(仮)
Xtextハンズオン(仮)You&I
 
C# Tokyo について 20200729
C# Tokyo について 20200729C# Tokyo について 20200729
C# Tokyo について 20200729m ishizaki
 
【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触
【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触
【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触Unity Technologies Japan K.K.
 
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜Shinichi Hirauchi
 
C# Tokyo コミュニティ説明 202205 版
C# Tokyo コミュニティ説明 202205 版C# Tokyo コミュニティ説明 202205 版
C# Tokyo コミュニティ説明 202205 版m ishizaki
 
C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版m ishizaki
 
I think typescript good point
I think typescript good pointI think typescript good point
I think typescript good pointME iBotch
 

Ähnlich wie 継承辺りのもしかしたらマイナーかもしれない C# (20)

C# Tokyo コミュニティについて Short 版
C# Tokyo コミュニティについて Short 版C# Tokyo コミュニティについて Short 版
C# Tokyo コミュニティについて Short 版
 
いつでもどこでも .NET
いつでもどこでも .NETいつでもどこでも .NET
いつでもどこでも .NET
 
Unity/CSharp 3
Unity/CSharp 3Unity/CSharp 3
Unity/CSharp 3
 
C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内C# Tokyo コミュニティ案内
C# Tokyo コミュニティ案内
 
「アジャイル型開発におけるプラクティス活用リファレンスガイド」の勘所と活用方法
「アジャイル型開発におけるプラクティス活用リファレンスガイド」の勘所と活用方法「アジャイル型開発におけるプラクティス活用リファレンスガイド」の勘所と活用方法
「アジャイル型開発におけるプラクティス活用リファレンスガイド」の勘所と活用方法
 
Webシステムプログラミング概要20150630
Webシステムプログラミング概要20150630Webシステムプログラミング概要20150630
Webシステムプログラミング概要20150630
 
Android バインド ライブラリ
Android バインド ライブラリAndroid バインド ライブラリ
Android バインド ライブラリ
 
M5Stackで授業をやってみた
M5Stackで授業をやってみたM5Stackで授業をやってみた
M5Stackで授業をやってみた
 
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
大学生のTwitter利用に関する定量分析―利用目的とサービス設計の関係―
 
Intelli code
Intelli codeIntelli code
Intelli code
 
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
関西Itコミュニティ集まれ!デブサミ名物コミュニティlt大会(発表版)
 
遷移図生成ツール blockdiag の紹介 @ Pycon mini JP 2011/01
遷移図生成ツール blockdiag の紹介 @ Pycon mini JP 2011/01遷移図生成ツール blockdiag の紹介 @ Pycon mini JP 2011/01
遷移図生成ツール blockdiag の紹介 @ Pycon mini JP 2011/01
 
Xtextハンズオン(仮)
Xtextハンズオン(仮)Xtextハンズオン(仮)
Xtextハンズオン(仮)
 
C# Tokyo について 20200729
C# Tokyo について 20200729C# Tokyo について 20200729
C# Tokyo について 20200729
 
【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触
【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触
【Unity道場スペシャル 2017幕張】大学、専門学校でunityの講座をおこなった感触
 
Netmf-180224
Netmf-180224Netmf-180224
Netmf-180224
 
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
ソフト屋が挑戦した電子工作 〜力ずくの10か月〜
 
C# Tokyo コミュニティ説明 202205 版
C# Tokyo コミュニティ説明 202205 版C# Tokyo コミュニティ説明 202205 版
C# Tokyo コミュニティ説明 202205 版
 
C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版C# Tokyo コミュニティ説明 2020/11/27 版
C# Tokyo コミュニティ説明 2020/11/27 版
 
I think typescript good point
I think typescript good pointI think typescript good point
I think typescript good point
 

Mehr von m ishizaki

継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#m ishizaki
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET するm ishizaki
 
Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話m ishizaki
 
「スタバ」する話
「スタバ」する話「スタバ」する話
「スタバ」する話m ishizaki
 
エンジニアと「スタバ」ツイートについて
エンジニアと「スタバ」ツイートについてエンジニアと「スタバ」ツイートについて
エンジニアと「スタバ」ツイートについてm ishizaki
 
Build 2022 / Uno Platform
Build 2022 / Uno PlatformBuild 2022 / Uno Platform
Build 2022 / Uno Platformm ishizaki
 
7 つの Blazor
7 つの Blazor7 つの Blazor
7 つの Blazorm ishizaki
 
仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話m ishizaki
 
モバイルディスプレイ
モバイルディスプレイモバイルディスプレイ
モバイルディスプレイm ishizaki
 
Windows フォームアプリ 2022
Windows フォームアプリ 2022Windows フォームアプリ 2022
Windows フォームアプリ 2022m ishizaki
 
C# 9 のおすすめ新機能
C# 9 のおすすめ新機能C# 9 のおすすめ新機能
C# 9 のおすすめ新機能m ishizaki
 
C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版m ishizaki
 
秋葉原 C# もくもく会
秋葉原 C# もくもく会秋葉原 C# もくもく会
秋葉原 C# もくもく会m ishizaki
 
C# Tokyo guide 2020/12/25
C# Tokyo guide 2020/12/25C# Tokyo guide 2020/12/25
C# Tokyo guide 2020/12/25m ishizaki
 
C# Tokyo コミュニティ案内 20201217
C# Tokyo コミュニティ案内 20201217C# Tokyo コミュニティ案内 20201217
C# Tokyo コミュニティ案内 20201217m ishizaki
 
C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925m ishizaki
 
「推しが100万部売れて欲しい!」 推し技術書LT大会 発表スライド
「推しが100万部売れて欲しい!」 推し技術書LT大会 発表スライド「推しが100万部売れて欲しい!」 推し技術書LT大会 発表スライド
「推しが100万部売れて欲しい!」 推し技術書LT大会 発表スライドm ishizaki
 

Mehr von m ishizaki (20)

継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#継承辺りのもしかしたらマイナーかもしれない C#
継承辺りのもしかしたらマイナーかもしれない C#
 
Visual Studio を使わず .NET する
Visual Studio を使わず .NET するVisual Studio を使わず .NET する
Visual Studio を使わず .NET する
 
Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話Xamarin で良くやっていたあれを MAUI でする話
Xamarin で良くやっていたあれを MAUI でする話
 
「スタバ」する話
「スタバ」する話「スタバ」する話
「スタバ」する話
 
エンジニアと「スタバ」ツイートについて
エンジニアと「スタバ」ツイートについてエンジニアと「スタバ」ツイートについて
エンジニアと「スタバ」ツイートについて
 
Build 2022 / Uno Platform
Build 2022 / Uno PlatformBuild 2022 / Uno Platform
Build 2022 / Uno Platform
 
7 つの Blazor
7 つの Blazor7 つの Blazor
7 つの Blazor
 
仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話仮想環境に MAUI 環境を構築する話
仮想環境に MAUI 環境を構築する話
 
2022 抱負
2022 抱負2022 抱負
2022 抱負
 
モバイルディスプレイ
モバイルディスプレイモバイルディスプレイ
モバイルディスプレイ
 
Windows フォームアプリ 2022
Windows フォームアプリ 2022Windows フォームアプリ 2022
Windows フォームアプリ 2022
 
dotnet tool
dotnet tooldotnet tool
dotnet tool
 
C#10
C#10C#10
C#10
 
C# 9 のおすすめ新機能
C# 9 のおすすめ新機能C# 9 のおすすめ新機能
C# 9 のおすすめ新機能
 
C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版C# Tokyo コミュニティ説明 2021/01/29 版
C# Tokyo コミュニティ説明 2021/01/29 版
 
秋葉原 C# もくもく会
秋葉原 C# もくもく会秋葉原 C# もくもく会
秋葉原 C# もくもく会
 
C# Tokyo guide 2020/12/25
C# Tokyo guide 2020/12/25C# Tokyo guide 2020/12/25
C# Tokyo guide 2020/12/25
 
C# Tokyo コミュニティ案内 20201217
C# Tokyo コミュニティ案内 20201217C# Tokyo コミュニティ案内 20201217
C# Tokyo コミュニティ案内 20201217
 
C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925C# Tokyo コミュニティ説明 20200925
C# Tokyo コミュニティ説明 20200925
 
「推しが100万部売れて欲しい!」 推し技術書LT大会 発表スライド
「推しが100万部売れて欲しい!」 推し技術書LT大会 発表スライド「推しが100万部売れて欲しい!」 推し技術書LT大会 発表スライド
「推しが100万部売れて欲しい!」 推し技術書LT大会 発表スライド
 

継承辺りのもしかしたらマイナーかもしれない C#