swift基础day5---面向对象(封装、多态)

本文主要讲解了Swift中的面向对象特性,包括封装的概念,如通过访问控制修饰符(private, public, internal)来隐藏属性和方法,以实现数据保护和便捷使用。同时,文章也简述了多态的基本概念,即父类引用子类对象的能力。" 136810911,10400294,PayPal支付集成教程:从注册到安全测试,"['PayPal支付', 'PHP', 'Web开发', '支付集成', '安全测试']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

封装

把隐藏属性、方法与方法实现细节的过程称为封装
目的:1.使用数据更加方便,2.为了数据保护。

隐藏属性和方法

使用访问控制修饰符将类和其属性方法封装起来。
修饰符:

  • private:所修饰的属性或者方法只能在当前 Swift 源文件里可以访问,在别的文件里访问会出错.
  • public:所修饰的属性或者方法对于引用了该文件或者模块的文件来讲,都能访问这些属性和方法。一般来说 public 的出现是为了 API 开发而设置。
  • internal:默认的访问权限。所修饰的属性或者方法在源代码所在的整个模块都可以访问。如果是框架或者是库代码,则在整个框架内部可以访问,框架由外部代码所引用时,则不可访问。如果是 App 代码,在整个 App 内部可以访问。
public class Student {
    public var name: String
    internal var age: Int   //只能在模块内部访问
    private var score: Int    //只能在本文件内被访问
    init(name: String, age: Int, score: Int){
        self.name = name
        self.age = age
        self.score = score
    }
    public func sayHi() {
        print("hello everyone!")
    }
    private func getScore() {
        print("My score is \(score)")
    }
}
let student = Student(name: "Tom", age: 18, score: 99)
student.sayHi()
//student.getScore()   //不能访问getScore 因为它是private类型的方法

多态

父类指向子类对象

class Animal {
    func speak() {
        print("Animal speak")
    }
    func eat() {
        print("Animal eat")
    }
    func sleep() {
        print("Animal sleep")
    }
}
class Dog: Animal {
    override func speak() {
        print("Dog speak")
    }
    override func eat() {
        print("Dog eat")
    }
    func run(){
        print("Dog run")
    }
}
class Cat: Animal {
    override func speak() {
        print("猫在喵喵叫")
    }
}
var animal = Animal()       //Animal
animal = Dog()  //指向Dog对象  Dog
animal.speak()  //Dog speak
animal.eat()    //Dog eat
animal.sleep()  //Animal sleep
var animal2: Animal = Cat()
animal2.speak()  //猫在喵喵叫
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值