OC 初识NSString,self关键字,继承,成员变量的可见性,description方法

初识 NSString:

char * string = “旭宝爱吃鱼”; 常量字符串存储在静态区

NSString * string = “旭宝爱吃鱼”; OC对象存储在堆区

创建NSString对象:

1、用字面量来创建

NSString * string = @"旭宝爱吃鱼";

2、通过类方法创建NSString对象

NSString * format = [NSString stringWithFormat:@"qq %g qq",1.1];
注意:stringWithFormat NSLog里面的占位符是通用的

3、new不适用NSString

NSString * new = [NSString new];

4、+alloc -init创建NSString对象

NSString * initString = [[NSString alloc] initWithFormat:@"%@ 旭宝爱吃鱼",1];

5、将一个C语言字符串,转化成OC对象

NSString * charString = [[NSString alloc] initWithUTF8String:"旭宝爱吃鱼"];

self关键字:

  1. self是一个指针,在每一个方法中都有一个self指针
  2. self可以出现在所有的方法中(对象方法和类方法)
  3. self指向调用者。(谁调用它就指向谁)
  4. 可以使用self->成员变量 访问成员变量,可以使用[self 方法名]调用方法

继承:

继承:子类拥有父类的所有属性,和方法。

继承的好处:抽取出了重复的代码,减少代码冗余.

继承的缺点:耦合性太强.

继承的使用注意:
  • OC中不允许子类和父类拥有相同名称的成员变量名;
  • OC中的子类可以拥有和父类相同名称的方法,在子类调用时,优先去自己的内部寻找,如果没有则一层一层的往上找;
  • 在子类中重写父类的方法,会覆盖父类的方法。
super关键字:

super关键字,在子类中重写方法时,可以让调用者跳过这一层而调用父类中的方法。

使用场景:子类在重写父类方法时,想要保留父类的一些行为。

成员变量的可见性:

  • @public 公有成员:成员变量可以在本类,子类,外部函数中访问。
  • @protected 受保护成员:成员变量可以在本类,子类,但不能在外部函数访问。如果成员变量没有任何修饰词,默认是protected
  • @private 私有成员:成员变量可以在本类中访问,不能在子类,和外部函数访问。

注意:在类实现下定义的所有成员变量的可见度,都是@private

description方法:

-description方法的默认实现是返回类名和对象的内存地址,这样的话,使用NSLog输出OC对象,意义就不是很大,因为我们并不关心对象的内存地址,比较关心的是对象内部的一些成变量的值。因此,会经常重写-description方法,覆盖-description方法的默认实现。

比如:

- (NSString *)description {

    NSString * string = [NSString stringWithFormat:@"name = %@ age = %d",_name,_age];
return string;
}

OC 初识NSString,self关键字,继承,成员变量的可见性,description方法的更多相关文章

  1. 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第6节 static静态_12_静态static关键字修饰成员变量

    创建一个学生类 定义成员变量,无参构造,全参构造.成员变量的getter和setter 所在教室必须是一样的,定义所在教室 下面来创建两个学生 只给one的room赋值了.two的教室并没有赋值.都输 ...

  2. 成员变量的隐藏,方法的覆盖,super关键字

    成员变量的隐藏:当父类和子类有相同的成员变量时,即定义了与父类相同的成员变量时,就会发生子类对父类变量的隐藏.对于子类的对象来说,父类中的同名成员变量被隐藏起来,子类就会优先使用自己的成员变量,父类成 ...

  3. OC中的点语法,成员变量的作用域

    点语法 点语法本质是函数的调用,不是像java中那样,是用来访问成员变量的:oc中访问成员变量是用 -> 访问的: Person *p = [Person new]; p.age = 10; / ...

  4. 静态static关键字概述和静态static关键字修饰成员变量

    static关键字 概述 关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 于某个对象的.也就是说,既然属于类,就可以不靠创建对象来调用了 ...

  5. java继承成员变量特点

    1 /* 2 * 在子父类中,成员的特点体现. 3 * 1,成员变量. 4 * 2,成员函数. 5 * 3,构造函数. 6 */ 7 8 //1, 成员变量. 9 /* 10 * 当本类的成员和局部变 ...

  6. java子类对象和成员变量的隐写&方法重写

    1.子类继承的方法只能操作子类继承和隐藏的成员变量名字类新定义的方法可以操作子类继承和子类新生命的成员变量,但是无法操作子类隐藏的成员变量(需要适用super关键字操作子类隐藏的成员变量.) publ ...

  7. java中的类修饰符、成员变量修饰符、方法修饰符。

    类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...

  8. java中的类修饰符、成员变量修饰符、方法修饰符

    类修饰符:  public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fi ...

  9. C++ 通过对象方式 、指针方式两种方式去访问成员变量(属性或者方法)

    准备 1.在VS中新建一个项目-Viscal C++ ---常规--空项目 2.建立一个.h的头文件 定义一个类 声明其成员(C#中的属性和方法) #include<iostream> # ...

随机推荐

  1. MVC4在IIS6上部署遇到的问题

    最近的一个项目结束了,花的时间一个月左右吧..... 开发环境 win7+VS2012+MVC4(.net 4.0)+SQL SERVER 2008 部署环境 windows server 2003 ...

  2. 二维码详解(QR Code)

    作者:王子旭链接:https://zhuanlan.zhihu.com/p/21463650来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 2016.7.5 更新:长文 ...

  3. css3飞机起飞进度条

    效果:http://hovertree.com/texiao/css3/27/ 源码下载:http://hovertree.com/h/bjaf/pgwql1x2.htm 本效果使用Font Awes ...

  4. css3很美的蟠桃动画

    查看效果:http://hovertree.com/texiao/css3/26/ 源码下载:http://hovertree.com/h/bjaf/ndhxgfkn.htm 效果图如下: 代码如下: ...

  5. ListActivity的使用

    Android中经常用到列表,ListActivity是实现列表的一种好方法. 使用ListActivity的方法,首先定义布局文件: <?xml version="1.0" ...

  6. Mybatis批量添加对象List

    1.对应的xml文件: <!--批量添加--><insert id="insertStandardItemInfo" parameterType="ha ...

  7. Eclipse保存文件时自动格式化代码

    实现效果:Ctrl+S会自动格式化并保存代码. 应用上图所示效果之后,在每次对Eclipse保存的时候都会实现自动格式化代码. 1. Fomated All lines,格式化该文件的所有代码:还是 ...

  8. 点我吧工作总结(技术篇) zookeeper

    我思故我在,提问启迪思考! 1.什么是zookeeper? 2.zookeeper与dubbo.springMVC之间的协同工作? http://doc.okbase.net/congcong68/a ...

  9. Eclipse功能集合

    大家好,这篇博客的目的是总结一下Eclipse这个软件中一些不为常用的功能.与大家分享.谢谢~ 1.利用one hour看了一下Eclipse的使用,用two hour写了这篇blog. 2.在现实项 ...

  10. Scalaz(17)- Monad:泛函状态类型-State Monad

    我们经常提到函数式编程就是F[T].这个F可以被视为一种运算模式.我们是在F运算模式的壳子内对T进行计算.理论上来讲,函数式程序的运行状态也应该是在这个运算模式壳子内的,也是在F[]内更新的.那么我们 ...