您的位置:首页 > 移动开发 > Swift

Swift面向对象介绍(一)

2015-08-22 09:54 411 查看

一、什么是面向对象

在讲对象的同时需要了解一下类的概念,说简单点,类就是把所有关于这对象的归类,比如人类,水果,汽车等,人类中有男人,有女人,还有.....呵呵,开玩笑。水果中有香蕉,苹果,菠萝,西瓜等等,那什么是对象呢,比乔布斯,就是人类中的一员,他就是一个对象,一个类的实例。

二、面向对象编程的特性

不管是java,c++,还是IOS编程(这些是我所接触到的,没接触的不好讲也不能讲),面向对象编程都会有一下三个特征:

1、封装:就是将对象的状态数据,对象的实现细节封装起来,然后暴露一些方法,这些方法可以通过外部对象调用来改变对象的状态,常见的封装有以下个private(个人的,私密的,就相当于个人隐私,是不能给别人看,更不能给别人用的),public(公共的)还有internal

2、继承:举个例子:我是人类中的一员,人类的一些属性我也会有,比如年龄,性别等,但是同时我是属于男人,男人也是一个类,男人同时也是人类,所以男人这个类可以获取人类中的一些属性,这个获取的方法就是继承,男人这个类继承了人类,swift提供了单继承,但是它通过协议来弥补了单继承的不足。

3、多态:多态就是对面向对象的灵活应用,后面介绍

三、swift面向对象编程

swift为对象、枚举,结构体、协议、扩展提供了面向对象支持

1、枚举

(1)创建:

 enum 枚举名

{

        枚举成员

}

如:性别

enum sex

{

   // 这是一种方式   

    case male,famale 

   /这是另一种方式

   case male

   case famale

}

(2)枚举的使用(申明变量):

第一种未给它类型:需要添加枚举名,当然如果给了它类型也可以添加枚举名

var person = sex.male

第二种给了它类型:此时可以省略枚举名,强调一下,可以不省略枚举名

var person:sex

person = .maleif()

示例:

import Foundation

enum sex

{

     case male,famale

}

var person = sex.male

if person == .male

{

     println("我是男生")

}

输出:我是男生

(3)枚举原始值:

enum 枚举名:原始类型

{

   case 枚举值 = 原始值

}

获取原始值:rawValue

示例:

import Foundation

enum sex:String

{

     case male = "男生",famale = "女生"

}

var person = sex.male

if person == .male

{

     println("我是\(person.rawValue)")

}

输出:我是男生

(4)获取关联值

创建关键值:

enum personPage

{

  case person(name:String,age:Int)

  case person()name:String,age:Int,sex:String)

}

示例:

enum personPage

{

     case person(name:String,age:Int)

     case person1(name:String,age:Int,sex:String)

}

var personex1 = personPage.person1(name="王迪",age=22,sex="女")

switch(personex1)

{

    case personPage.person1(var name,var age,var sex):

         println("my name is \(name),my age is \(age),my sex is \(sex)")

}

输出:my name is 王迪,my age is 22,my sex is 女

2、结构体和类

(1)创建:

修饰符 class 类名
{
属性,方法,构造器,下标
}

修饰符 struts 结构体名
{
属性,方法,构造器,下标
}

修饰符:private,public,internal,final,也可以省略
例如:

public class Person
{
   var name:String =""
   var age:Int =0

    
   func sayHi(content:String)
    {
       println(content)
    }
}

//第一种方式 创建实例

var p:Person

p = Person()

p.sayHi("hello王迪")

//第二种方式 创建实例

var pp = Person()

pp.sayHi("hello world")

输出:hello 王迪
     hello world

(2)self关键字

self指的是调用该方法的实例,说简单点就是自己调用这个方法点那个对象,看下面这个实例

publicclass Personsay
{
   var name:String =""
   var age:Int =0

    
   publicinit(name:String,age:Int)
    {
       self.name = name
       self.age = age
    }

    
   publicfunc eat()
    {
       println("我正在吃饭")
    }

    
   publicfunc sayHi()
    {
       self.eat()

        println("Hi my name is\(name),my age is\(age)")
    }

    
}

var p1 =Personsay(name:"王迪"
, age:23)

p1.sayHi()

输出:Hi my name is王迪,my age is 23
通常一个方法中调用这个类中的其他属性,方法都是可以省略self的

(3)关于初始化问题:

publicclass FiexedLengthRange
{
   publicvar start:Int
   publicvar length:Int

    

    public
init()
    {
       start=0
       length=0
    }

    
   publicinit(start:Int,length:Int)
    {
       self.start = start
       self.length = length
    }

    
   publicfunc info()
    {

     println("the start=\(start),the lenghth=\(length)")
    }
}

var fix=FiexedLengthRange(start:10,length:20)

fix.info()
关于初始化,第一种就是手动初始化如:var a:int = 0,第二种是写init()方法进行初始化

(4)结构体

struct StrutsTest
{
   var a:Int
   let b:Int
}

var tt =StrutsTest(a:12,b:13)

println("a=\(tt.a),b=\(tt.b)")

输出:a=12,b=13

struct StrutsTest2
{
   var a:Int =10
   let b:Int =20
}

var tt2 = StrutsTest2()

println("a=\(tt2.a),b=\(tt2.b)")
输出:a=10,b=20
结构体的初始化也有两种一种是自己给里面的属性定义,还有一种就是使用系统提供的初始化构造器如:StrutsTest(a:12,b:13)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift 面向对象