m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

swiftの学習(クラス)

クラス

カプセル化とかできるあれです。
他のマニュアルを軽く見た限りではまだ、あまりいろいろできる感じには見えないけど
簡単に組めるような作りにしているのかな?

構成

f:id:m_shige1979:20140925210229p:plain

ファイル説明

main.swift

処理を書くswiftファイル

Car.swift

Car用のクラスを記述

Bus.swift

Bus用のクラスを記述

サンプル

Car.swift
//
//  Car.swift
//

import Foundation

// class定義
class Car{
    
    var name = ""
    var age = 0
    
    // 初期化
    init(){
        println("Car 初期化")
        self.name = ""
        self.age = 0
    }
    
    // メソッド
    func test1(){
        println("test1 method")
    }
    
    // setter
    func setName(_name: String){
        self.name = _name
    }
    func setAge(_age: Int){
        self.age = _age
    }
    
    // getter
    func getName()->String{
        return self.name
    }
    func getAge()->Int{
        return self.age
    }
    
}
Bus.swift
//
//  Bus.swift
//

import Foundation

class Bus : Car{
    
    // 初期化処理を上書き
    override init(){
        println("Bus 初期化")
    }
    
    // メソッド
    override func test1(){
        println("Bus test1 method")
    }
    
    // メソッド
    func test2(){
        println("Bus method")
    }
    
}
main.swift
//
//  main.swift
//

import Foundation

// class初期化
var _a = Car()

// メソッド実行
_a.test1()

// setter
_a.setAge(20)
_a.setName("あああ")

// getter println
println(_a.getAge())
println(_a.getName())

// 継承
var _b = Bus()

_b.test1()
_b.test2()

// setter
_b.setAge(33)
_b.setName("いいい")

// getter println
println(_b.getAge())
println(_b.getName())

ちなみに実行結果

Car 初期化
test1 method
20
あああ
Bus 初期化
Car 初期化
Bus test1 method
Bus method
33
いいい

classの概要

  • "class"で定義
  • "init"が初期化処理
  • privateやprotectedなどの定義はまだない
  • 継承した場合は"override"しないとメソッドを上書きできない

こんな感じかな?

インターフェースとか抽象クラスの方法とかあったらいいなと思ったけど見つけきれなかった…

classファイルを読み込んでいないけど意識して読み込む処理はないのかな?

所感

まだ理解度は少ない感じだけどプログラム言語としての必要最低限は把握した感じ。
全部を理解しようとしているとモチベーションが下がってしまうのでここからは写経タイムに入るかもしれない。

簡単なアプリのチュートリアルとかあったら真似して作ってみるのもアリかも…