面向对象-三大特性
一.封装
1.封装指的是成员变量的封装,把内部的成员变量保护起来,不让外部直接访问
2.set方法
1)作用:提供一个方法给外部设置成员变量的之
2)命名规范:方法名必须以set开头
set后面跟上成员变量的名称,而且成员变量首字母要大写
返回值一定是void
一定要接收一个参数,参数类型和成员变量一致
形参的名称不能跟成员变量一样
3.get方法
1)作用:返回对象内部的成员变量
2)命名规范:get方法的名称一般就跟成员变量同名
4.成员变量的命名规范
1)成员变量都以下划线 _ 开头
2) 可以跟get方法的名称区分开
3) 可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量
5.代码示例
实例总结:通过对这个例子的上手操作练习,可以知道如何对成员变量进行封装,还能学到编程中的一些命名规范
继承
一.简述
继承是面向对象的一个重要特征。当多个类中存在相同属性和行为时将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。这时,多个类可以称为子类,单独的这个类称为父类或者超类。
二.好处
1. 抽取重复代码
2. 建立了类与类之间的关系
3. 子类可以拥有父类中所有的属性和方法
三. 坏处
1.耦合性太强
四.重写:子类重新实现父类中的某个方法
注意点: 1.父类必须声明在子类的前面
2.子类不用拥有和父类相同的成员变量
3.调用某个方法时优先去当前类中找,如果找不到,去父类中找
五.继承的使用场合
1.当两个类拥有相同属性和方法的时候,就可以将相同的东西抽取到一个父类中
2. 当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类
六.具体实例:
从这个例子中可以看出,狗这个类和猫这个类具有相同的属性和行为,所以我们把这些东西单独的抽取出来,把他放到animal这个类中,然后让狗和猫去继承它,狗和猫就拥有了这些属性和方法。这么做可以节省代码。
多态
1. 基本概念:父类指针指向了子类对象(某一类事物的多种形态)
2. 好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象
3. 局限性:父类类型的变量 不能 直接调用子类特有的方法。必须强转为子类类型变量后,才能直接调用子类特有的方法
4. 代码体现
Person*p = [Student new];
p->age= 100;
[p walk];
1)子类对象赋值给父类指针
2) 父类指针访问对应的属性和方法