面向对象三大特性: 成员变量的封装、继承、多态 封装: /* set方法: 1.作用:提供一个方法给外界设置成员变量 2.命名规范: 1>方法名必须以set开头 2>set后面跟上成员变量的名称,成员变量的首字母必须大写 3>返回值一定是void 4>一定要接受一个参数,而且参数类型跟成员变量类型一致 5>形参的名称不能跟成员变量名一样 */ - (void)setAge:(int)newAge; /* get方法: 1.作用:返回对象内部的成员变量 2.命名规范: 1>肯定有返回值,返回值类型肯定与成员变量类型一致 2>方法名跟成员变量名一样 3>不需要接受任何参数 成员变量的命名规范:一定要以下划线 _ 开头 作用: 1.让成员变量和get方法的名称区分开 2.可以跟局部变量区分开,一看到下划线开头的变量,一般都是成员变量 */ - (int)age; /* 对象方法 1>减号 - 开头 2>只能由对象来调用 3>对象方法中能访问当前对象的成员变量(实例变量) 类方法 1>加好 + 开头 2>只能由类(名)来调用 3>类方法中不能访问成员变量(实例变量) 类方法的好处和使用场合 1>不依赖于对象,执行效率高 2>能用类方法,尽量用类方法 3>场合:当方法内部不需要使用到成员变量时,就可以改为类方法 可以允许类方法和对象方法同名 工具类:基本没有任何成员变量,里面的方法基本都是类方法 */ self:(指针)指向方法调用者,代表着当前对象 self的用途: 1>谁调用了当前方法,self就代表谁 *self出现在对象方法中,self就代表对象 *self出现在类中,self就代表类 2>可以利用”self->成员变量“访问当前对象内部的成员变量 3>[selff 方法名]可以调用其他对象方法/类方法 继承 /* 1.继承的好处: 1>抽取重复代码 2>建立了类之间的关系 3>子类可以拥有父类中的所有成员变量和方法 2.注意点 1>基本上所有类的根类是NSObject 2>父类必须声明在子类的前面 3>不允许子类和父类拥有相同名称的成员变量 重写:子类重新实现父类中的某个方法,覆盖父类以前的做法 4>子类可以拥有与父类相同名称的方法,调用时优先在子类找方法,如果找不到,去父类中招 3.坏处:耦合性太强 4.继承的使用场合 1>当两个拥有相同属性和方法的时候,就可以讲相同的东西抽取到一个父类中 2>当A类拥有B类中的部分属性和方法时,可以考虑让B类继承A类 A { int _age; int _no; } B : A { int _weight; } // 继承:xx 是 xxx // 组合:xxx 拥有 xxx 2.组合 A { int _age; int _no; } B { A *_a; int _weight; } */ super的作用 1.直接调用父类中的某个方法 2.super处在对象方法中,那么就会调用父类的对象方法 super处在类方法中,那么就会调用父类的类方法 3.使用场合:子类重写父类的方法时想保留父类的一些行为 多态(多种形态) 1.没有继承就没有多态 2.代码的体现:父类类型的指针指向子类对象 3.好处:如果函数\方法参数中使用的是父类类型,可以传入父类、子类对象 4.局限性: 1>父类类型的变量 不能 直接调用子类特有的方法,必须强转为子类类型变量后,才能直接调用子类特有的方法
时间: 2024-10-21 01:10:37