OC--面向对象三大特性

面向对象三大特性:
    成员变量的封装、继承、多态

封装:
/*
    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

OC--面向对象三大特性的相关文章

[黑马程序员]Objective-C 面向对象三大特性之继承

基本概念 程序的世界和人类的“对象”世界在思想上是没有设么区别的,富二代继承了父母,自然就拥有了父母拥有的所有资源,子类继承了父类同样就拥有了父类所有的方法和属性(成员变量). 比如我们前文(Objective-C 面向对象三大特性之多态)中提到的Animal和Dog类: #import <Foundation/Foundation.h> @interface Animal : NSObject -(void) eat; @end @implementation Animal -(void)

JAVA基础——面向对象三大特性:封装、继承、多态

JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据.     隐藏类的实例细节,方便修改和实现. 3.封装的实现步骤 需要注意:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作.当然最好使用get/set方法,比较标准. A.访问修饰符 从表格可以看出从上到下封装性越来越差. B.this关键字 1.this关键字代表当前

面向对象三大特性五大原则 + 低耦合高内聚

面向对象三大特性五大原则 + 低耦合高内聚 面向对象的三大特性是"封装."多态"."继承",五大原则是"单一职责原则"."开放封闭原则"."里氏替换原则"."依赖倒置原则"."接口分离原则". 什么是面向对象 面向对象(Object Oriented,OO)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统.交互式界面.应用结

C#面向对象三大特性

C#面向对象三大特性 面向对象的三个基本特征是:封装.继承.多态. 封装:隐藏内部功能的具体实现,只保留和外部交流数据的借口.就好比电视机,用一个外壳把内部零部件及控制电路封装起来,只提供按钮或者遥控器接口供人使用.封装可以隐藏实现细节,使得代码模块化.封装成类或结构:类和结构实际上是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法.(1)类定义了每个类对象(实例)可以包含什么数据和功能.举例来说,如果一个类表示客户,我们就可以定义字段customerId,name和addres

面向对象三大特性之二--【继承】

PHP中,一个类只能有一个父类,所谓继承就是去扩展父类,在设计类的时候,如果有两个或多个类有相同或者共用的部分,就将相同部分提取出来放到一个父类里面. 子类只能继承父类的公共属性和公共方法,如果父类的属性和方法有private修饰封装的话,子类是不能访问的(包括类的内部和外部),当然父类的对象也不能在外部访问,但如果是protected修饰的成员属性和方法,子类的类的内部是可以访问的($this),但子类的对象不能在外部访问. 继承的核心是扩展父类的方法,扩展方法包括两种,一种是添加父类中没有的

(1) 深入理解Java面向对象三大特性 封装 继承 多态

转眼已经工作快6年了,最开始做了2年J2EE:然后整了2年的数据仓库,主要是Cognos的报表开发:现在从事4G LTE核心网的开发,用的语言任然是Java,但写代码的机会不多,基本都是看代码找BUG,偶尔做点new feature也是在比较成熟的框架上复制.粘贴.修改,大部分时间还是在理解业务,钱多.事少.离家近,当时来这家公司图的是后面2点,2年过去了,英文水平有所提升,对敏捷开放也有一定的了解,但技术方面明显退步了或者说没有进步吧,本来以前也不怎么好,因为工作上用不到,自己也没怎么学习,所

《黑马程序员》 OC的三大特性

OC 的三大特性:封装.继承.多态. 封装:过滤不合理的值 #import <Foundation/Foundation.h> // set 方法 // 作用:提供一个方法给外界设置成员变量,可以在方法对成员变量进行赋值和过滤 // get 方法 // 作用:返回对象内部的成员变量,得到成员变量的值. @interface Student : NSObject { // 成员变量名的命名规范 // 成员变量名肯定以下划线开头 // 好处:可以区分参数名称和成员变量的名称,也可以区分变量名和成员

面向对象编程(十四)——面向对象三大特性之多态②

面向对象最核心的机制——动态绑定,也叫多态. 通过下面的例子理解动态绑定,即多态 1 package javastudy.summary; 2 3 class Animal { 4 /** 5 * 声明一个私有的成员变量name. 6 */ 7 private String name; 8 9 /** 10 * 在Animal类自定义的构造方法 11 * @param name 12 */ 13 Animal(String name) { 14 this.name = name; 15 } 16

JavaScript基础--面向对象三大特性(八):继承封装多态

一.构造函数基本用法:function 类名(参数列表){属性=参数值} 1 function Person(name,age){ 2 this.name = name; 3 this.age = age; 4 } 5 6 //创建Person对象的时候,可以直接给名字和年龄 7 var p1 = new Person('abc',80); 8 window.alert(p1.name); 9 var p2 = new Person('hello',9); 10 window.alert(p2.

面向对象三大特性--封装

//面向对象三大特性//1.封装//目的:让类更加安全,不让外接直接访问类里边的成员变量/*class Ren { private $Name; private $Age; private $Sex; }*/ /*function __construct($s) { $this->Name = $s; } function Say() { echo $this->Name."正在说话!";} function __destruct() { echo "该对象销毁了