• Skip to primary navigation
  • Skip to content
  • Skip to primary sidebar

Code School

プログラミング初心者向け応援メディア

  • Home
  • Swift
  • Python3
  • Ruby
  • Ruby on Rails
  • CSS
  • Sketch
  • How to Study
  • Column
You are here: Home / iOSアプリ開発 / Swift / [Swift]プロトコルについて初心者向けに使い方を解説

 

 

[Swift]プロトコルについて初心者向けに使い方を解説

2018年6月29日 By Code School編集部

Swiftのプロトコルについて初心者向けに使い方、書き方を紹介していきます。

Swiftのプロトコルとは?

プロトコルとは、プロパティやメソッドなどを設定するものです。

クラスを設計書とするならば、プロトコルは仕様書という感じでしょうか。ちなみに直訳すると「規約」という意味です。

プロパティやメソッドを設定すると言っても、具体的な処理を記述するというわけではありません。

 

2015年のWWDCでAppleがSwiftは世界で初めてのプロトコル指向言語だと発表し注目もされました。

オブジェクト指向プログラミングは聞いたことがあると思いますが、プロトコル指向言語はあまり聞きなれないのではないでしょうか?

 

プロトコルを書いてみる

さっそくプロトコルについて書いてみます。

前回、クラスの書き方の部分でも紹介しましたがAnimalクラスというものをプロトコルで定義してみましょう。

前回の記事ではAnimalクラスを定義し、そこからサブクラスのDogクラスやCatクラスを定義しました。

[Swift]初心者向けにクラスの使い方をまとめてみた

Swift
1
2
3
4
protocol Animal {
    var name: String {get}
    func bark() -> String
}

非常に簡単です。クラスと違いプロトコルではルールを記述するだけなので、処理まで書かないので非常にシンプルになります。

protocol プロトコル名{}の記述となります。なお、プロトコル名の部分は先頭が大文字になります。

この中ではnameプロパティと関数のルールを記述しています。

 

それでは次にこのプロトコルを元にして、クラスを書いていきます。

Swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
protocol Animal {
    var name: String {get}
    func bark() -> String
}
 
class Dog : Animal {
    let name: String
    func bark() -> String {
        return "bow!"
    }
 
    init(name: String) {
        self.name = name
    }
}

クラスの継承と同じような感じですね。 class クラス名 : プロトコル名{}の記述となります。

 

複数のプロトコルは継承できる

Swiftでは複数クラスの継承はできません。多重継承が認められていないわけですね。

しかし、プロトコルでは多重継承が可能です。

Swiftとはじめとして単一継承しかできない場合、元となるスーパークラスが肥大化する傾向にあります。

その解決策として注目されるようになったのが、プロトコル指向というわけです。








 

関連記事



Filed Under: Swift

Primary Sidebar




Categories

  • iOSアプリ開発 (48)
    • Swift (30)
    • Xcode (13)
  • Python3 (28)
    • Django (9)
  • Ruby (17)
    • Ruby on Rails (6)
  • Scratch (1)
  • Unity (2)
  • Web制作 (42)
    • CSS (34)
    • HTML (4)
  • コラム (11)
  • プログラミングスクール (93)
    • 子供向けプログラミングスクール (58)
    • 社会人向けプログラミングスクール (41)
  • プログラミング学習方法 (8)
  • 開発ツール (30)
    • Atom (1)
    • Brackets (5)
    • Github (2)
    • Mac (1)
    • Pycharm (3)
    • Sketch (16)
[Python]Scrapyを動かした時にSyntaxError: invalid syntaxとエラーが出る場合の対処法

[Python]Scrapyを動かした時にSyntaxError: invalid syntaxとエラーが出る場合の対処法

[Django]TextField内に記載した改行を反映させたい

[Django]TextField内に記載した改行を反映させたい

[Django]変数内の文字列をトランケートする

[Django]変数内の文字列をトランケートする

[Django]変数内に格納したhtmlコードを反映させたい

[Django]変数内に格納したhtmlコードを反映させたい

[Django]画面上で変数の文字列の長さを返すフィルター

[Django]画面上で変数の文字列の長さを返すフィルター

[Django]モデルを追加した時にmigrateエラーが出ないための方法

[Django]モデルを追加した時にmigrateエラーが出ないための方法

[Django] def __str__(self)とは?

[Django] def __str__(self)とは?

[Python]DjangoでMySQLを使う方法、ハマったことまとめ

[Python]DjangoでMySQLを使う方法、ハマったことまとめ

[Python]DjangoのチュートリアルDjangoGirlsをやってみた感想

[Python]DjangoのチュートリアルDjangoGirlsをやってみた感想

Swiftの命名規則まとめ

Swiftの命名規則まとめ

PycharmでDjangoをインストールしようとするとAttributeErrorが出る時の対処法

PycharmでDjangoをインストールしようとするとAttributeErrorが出る時の対処法

Pythonの命名規則まとめ

Pythonの命名規則まとめ

[Python]Djangoで構築されたWebサービス18選

[Python]Djangoで構築されたWebサービス18選

iPhoneアプリを公開する手順まとめ!デベロッパー登録からアプリ公開までの流れ

iPhoneアプリを公開する手順まとめ!デベロッパー登録からアプリ公開までの流れ

[iOS]アプリ申請時、バンドルIDにアプリがない時に手動で登録する方法

[iOS]アプリ申請時、バンドルIDにアプリがない時に手動で登録する方法