OC学习 第三章 点语法 属性 继承 多态
1.点语法
要想使用点语法,setter/getter方法必须严格按照格式来写(首字母大写且只能对应一个成员变 量)
对象名.成员变量 = 值;
s.
nowlive
=
1800
;
s. agolive = 2000 ;
s. nowat = @" 水晶 " ;
s. agoat = @" 草丛 " ;
s. atack = 150 ;
s. agolive = 2000 ;
s. nowat = @" 水晶 " ;
s. agoat = @" 草丛 " ;
s. atack = 150 ;
s.
defense =
40;
2.属性
@property
(
nonatomic
,
strong
)
NSString
*name;
属性帮我们封装了setter/getter方法 格式为:@property + 属性名(.h文件)
属性注意事项:
1 、当属性名和成员变量名一样时,如果我们想保证成员变量有值,那么就需要在 .m 中加 入 @synthesize 变量名。
2 、当属性名和成员变量名一样时,如果我们对成员变量的值不强求,但我们又想打印赋上的值,这 时在 .m 里可以使用 _ 属性名 或者 self. 属性名。
3 、当定义一个属性时,会首先查找是否有以 _ 属性名命名的成员变量,如果有,则默认对其进 行 set 和 get ,如果没有,则隐式生成以“ _ 属性名”命名的变量。
1 、当属性名和成员变量名一样时,如果我们想保证成员变量有值,那么就需要在 .m 中加 入 @synthesize 变量名。
2 、当属性名和成员变量名一样时,如果我们对成员变量的值不强求,但我们又想打印赋上的值,这 时在 .m 里可以使用 _ 属性名 或者 self. 属性名。
3 、当定义一个属性时,会首先查找是否有以 _ 属性名命名的成员变量,如果有,则默认对其进 行 set 和 get ,如果没有,则隐式生成以“ _ 属性名”命名的变量。
4
、当我们使用属性时,成员变量可以省略。
3.继承特点:子类继承父类后,重写了父类的非私有的方法和属性。
(1)使用继承可以实现代码的复用,减少代码的
(2)objective c中一个类可以继承另外一个类;
(3)继承关系是可以传递的;
(4)单一继承性(只能继承一个父类)
(5)被继承的类称为父类或超类(基类)
继承的类称为子类或派生类(孩子类)
(6)子类可直接“拥有“父类中所有允许子类继承的属性和方法
(7)子类可以改变父类中已有的方法,执行不同的代码实现
(8)子类除了可以调用父类的方法,也可以调用父类的父类的方法,也就是说继承可以确 保某个父类型之下的所有类都会有父类型所持有的全部方法;
继承中方法的调用流程:首先到子类去找,如果有该方法,就调用子类方法,如果没有实现,就再到父类去 找,如果父类还没有,再到父类的父类去找,如果最后一直没招到,程序会崩溃
4.多态:父类的方法被多个子类继承,因子类实现方法不同而表现出的多种形态(父类指针指向子类对象)
多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态。
在使用多态是,会进行动态检测,以调用真实的对象方法。
多态在代码中的体现即父类指针指向子类对象。
Person *p = [[Student alloc]init];父类指针指向子类对象,编译时会认为是父类的对象, 但运行时,会检测其具体是谁的对象
[p sleep];
虽然说实际上是子类的对象,但是在编译期间,仍被 当成父类使用,因此,不能直接调用子类的方法或属 性
虽然说实际上是子类的对象,但是在编译期间,仍被 当成父类使用,因此,不能直接调用子类的方法或属 性
[p feedDog]