プログラマーです。雑記系、プログラミング系、投資系の記事を書いています!

SwiftUI クラスの使い方

どうも名探偵です。

今回はSwiftのクラスについて書こうと思います。

 

私が参考にしている参考書です。

とてもオススメですのでぜひ読んでみてください!

 

関連記事

[adcode] 転職までをサポートしてくれるプログラミングスクールGEEK JOBを紹介します。プログラミングスクールといえばプログラミングをしっかり学んであとは転職を自分で頑張るというのが多いと思います。[…]

 

クラスの概要

クラスとは様々な機能を持ち合わせたものです。オブジェクトと呼ばれます。

オブジェクトとは「物体」ですが、様々な機能を持ったオブジェクトを持ち合わせた

ものを定義しています。

 

クラスのインスタンス

クラスにはインスタンスというものがあります。クラスの機能を使うには必ず

このインスタンスというものを生成しなくてはなりません。逆にこのインスタンスを

作ってしまえばそのクラスの機能は使えます。

インスタン生成の書き方はあとで説明します。

 

クラスの定義の仕方

とりあえずクラスの定義のコードを書きます。

class TestClass {
// プロパティ
var name: String
var age: Int
// イニシャライザ
init(name: String, age: Int) {
        self.name = name
        self.age = age
}
// メソッド
func hello() -> String {
let msg = “Hello” + “私は” + name + “年齢は” + “\(age)” + “です”
return msg
}
}

↓コピー用

class TestClass { // プロパティ var name: String var age: Int  // イニシャライザ init(name: String, age: Int) {  self.name = name  self.age = age }  // メソッド func hello() -> String {  let msg = "Hello" + "私は" + name + "年齢は" + "\(age)" + "です"  return msg }}

これがクラスの定義となります。

プロパティとは属性ともいい、値を管理します。

イニシャライザはプロパティの初期値がない場合に定義する必要があります。

例えば、nameとageにそれぞれ宣言時に値を入れていればイニシャライザはなくても大丈夫です。

メソッドは機能と呼ばれ、処理内容を定義します

 

実際に使ってみる

では実際にこのクラスの機能を使ってみましょう!

このクラスではhelloというメソッドを使用して、自己紹介をします。

ではコードを書いていきましょう!

 

// インスタン生成
let test = TestClass(name: “名探偵”, age:20)
//メソッド呼び出し
test.hello()

 

↓コピー用

// インスタンス生成let test = TestClass(name: "名探偵", age: 20)// メソッド呼び出しtest.hello()

インスタンス生成ではクラスでイニシャライザを定義しているので、

引数を指定しないといけません。今回はこのような感じです

メソッドを呼び出すときは「インスタンス.メソッド名」で定義します。

結果↓

「Hello私は名探偵年齢は20です」

継承

継承はすでに存在しているクラスを少し拡張して使いたい時に有効です。

他のクラスを継承したクラスをサブクラス、元のクラスをスーパークラスといいます。

書式

class クラス名: スーパークラス {

・・・

}

サブクラスはスーパークラスの要素を持っていると覚えてください。

例題

// スーパークラスclass TestClass { // プロパティ var name: String var age: Int  // イニシャライザ init(name: String, age: Int) {  self.name = name  self.age = age }  // メソッド func hello() -> String {  let msg = "Hello" + "私は" + name + "年齢は" + "\(age)" + "です"  return msg }}

まずこのようにクラスを宣言しておきます。

次に継承していきます。

// 継承class TestClassSub: TestClass { var from: String // イニシャライザ init(name: String, age: Int, from: String) {  self.from = from  // スーパークラスのイニシャライザに渡す  super.init(name: name, age: age) } // メソッドを少し改造 func hellosub() -> String {  let msg = "Hello" + "私は" + name + "年齢は" + "\(age)" + "です" + "出身は" + from + "です"  return msg }}

上記のTestClassを継承しています。

サブクラスにイニシャライザがある場合、スーパークラスも初期化する必要があります。

スーパークラスを初期化するにはsuper.initnのようにします。

では、実際にインスタンス生成をして使用していきましょう。

var testsub = TestClassSub(name: "名探偵", age: 20, from: "Japan")testsub.hellosub()

これの結果が「Hello私は名探偵年齢は20です出身はJapanです」となります。

まとめ

クラスの基礎的なところをまとめました。

クラス化を意識することにより、非常に見やすいコードが書けます。

 

クラスの継承は非常に便利です。同じ定義をしなくても済みます。

正直私はあまりクラスの継承は使いません。チームで開発するならまだしも

1人なので継承せずにやってます。

しかし、継承した方が圧倒的に楽なのでぜひ使ってください!

最新情報をチェックしよう!
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments