黑马程序-oc基础---封装 继承 多态 NSString 代码规范格式的重要性

//写代码的一条重要性:就是代码编写规范,尤其是xcode编写对格式的对齐有关系,在下面的代码没有怎么对齐的情况下出现30个警告

//一般oc程序的头文件

#import <Foundation/Foundation.h>

typedef enum {

SexMan,

SexWoman

} Sex;

//类的声明

@interface Student : NSObject

{

int _age;

// int no;

Sex _sex;

}

-(void)setAge:(int)newAge;

-(int)age;

-(void)setSex:(Sex)sex;

-(Sex)sex;

-(void)study;

@end

//类的实现

@implementation Student

-(void)setAge:(int)newAge

{

//_age成员变量传值的过滤

// 对传进来的参数进行过滤

if (newAge <= 0)

{

newAge = 1;

}

_age=newAge;

}

-(int)age

{

return _age;

}

-(void)setSex:(Sex)sex

{

_sex=sex;

}

-(Sex)sex

{

return _sex;

}

-(void)study

{

NSLog(@"%d岁的还在学习",_age);

}

@end

//主函数

int main()

{

//创建Student类的一个对象stu

Student *stu=[Student new];

//对age进行传值

[stu setAge:10];

[stu setSex:SexMan];

[stu sex];

[stu age];

[stu study];

return 0;

}

[email protected] Student : NSObject

NSObject是一个root class 根类

加上:NSObject为了保证@interface Student 有创建Student类的能力

2.成员变量 一定要加下划线_开头

目的是为了避免get方法返回的值为成员变量而不是get方法的歧义;

3.调用对象没有的方法 只是警告,只有在运行过程中报错,提示:找不到该对象方法

4.对象方法 -对象调用 对象方法里可以调用类方法

5.类方法    +类调用 类方法不能访问成员变量

6.self : 指针指向调用方法的对象

可以利用self->成员变量名  访问当前对象的成员变量

self 方法名  则调用其他对象方法、类方法

ARC为iOS 5推出的新功能,全称为ARC(Automatic Reference Counting)。简单地说,就是代码中自动加入了retain/release,

原先需要手动添加的用来处理内存管理的引用计数的代码可以自动地由编译器完成了。Xcode 4.2已开始使用该功能;

继承

NSObject为Foundation下系统最基本的类  根类 系统自带的类   root class

在NSObject类中有new方法  为类方法

系统有2个根类,还有一个是NSProxy  代理类  根类 root class

继承的好处:1.抽取重复代码

2.建立类之间的关系

3.子类可以拥有父类中的所有成员变量和方法

子类与父类不能相同的成员变量,但是可以有相同的方法,即为:重写

子类重新实现父类中某一方法 覆盖父类的方法

父类声明必须写在子类前面

调用方法:先从当前对象找方法,找不到再到父类中找

每个对象都一个isa指针

每个类中有一个superclass指针

继承的缺点是:耦合性太强了

使用场合:当两个类拥有相同的属性和方法的时候,就可以抽取相同的东西到一个父类

A类拥有B类的部分属性和方法,可以考虑B类继承A类

不是任何情况下都可以,需要逻辑通过

逻辑不合理的话,可以使用组合的方式使用

继承:xx是xxx

组合:xxx拥有xxx

super的作用

1.直接调用父类的某个方法

2.super处在对象方法中,那就调用父类对象方法

3.super处在类方法中,那就调用父类的类方法

4.使用场合:子类重写父类的方法时,保留父类的一些行为

多态:

父类指针指向子类对象

Animal *a = [Dog new];

在编译中a为Animal的对象,但是在调用时会检测对象的真实形象为Dog的对象

[a eat];

多态的局限性:父类类型的变量不能用来调用子类的方法

Animal *aa = [Dog new];

// [aa run]; 报警告 run为Dog的方法

Dog *dd = (Dog *)aa; 将aa转为Dog *类型的变量

[dd run];

多态:1.没有继承就没有多态

2.代码的体现:父类类型的指针指向子类对象

3.好处:如果函数方法方法参数中使用的是父类类型,可以传入父类、子类对象

4.局限性:父类类型的变量不能直接调用子类特有的方法,需使用强制类型

NSString:

char *name = "itcast"

NSString *str = @"itcatst";

NSLog(@"%s",name);

NSLoge(@"我在%@上课",str);

NSString *newStr=[NSString stringWithFormat:@My age is %d and no is %d

and name is %@", age, no, name]

NSLog(@"---%@", newStr);

length方法算的是字数  int size = [name length]

NSLog(@"---%d",size);

NSLog(@"---%ld",[newStr length]);

编写代码的格式规范的重要性:

= 两边留空格

#include <math.h> 应修改使用为OC的格式 #import <math.h>

备注在 // 两边留空格

distanceWithOther  距离  与 其他

Circle 圆  Point 点

isInteractWithOther 是否相交 BOOL类型

只有利用类名调用类方法的时候,不需要 在类名后面写*

其他情况下 类名后面统一加上一个*

时间: 2024-11-03 03:46:45

黑马程序-oc基础---封装 继承 多态 NSString 代码规范格式的重要性的相关文章

OC语言---封装,继承,多态

/* 面向对象程序设计中的类有三大特性:继承,封装,多态,这是OC中类的三大特性. 1.封装: 封装是对象和类概念的主要特性.它是隐藏内部实现,稳定外口 可以看作是“包装”. 封装,也就是把客观事物封装成抽象的类 并且类可以把自己的数据和方法只让可信的类或者对象操作,对不 可信的进行信息隐藏. 好处:使用更加简单  变量更加安全 可以隐藏内部实现细节  开发速度加快 OC中一个类可以继承另一个类,被继承的类成为超类(super class),继承的类是子类(child class),可以直接拥有

黑马程序员——基础加强篇

------- android培训.java培训.期待与您交流! ---------- MyEclipse相关知识 Workspace与project 切换工作空间:File---Switch Workspace---Other 一个工作间包含多个工程,切换工作间之后,会影响里面的工程,例如快捷键什么的都要重新配置如果重新配了之后快捷键还没有用就要考虑下那个快捷键是不是冲突了    视图管理与程序调试 可以通过Window---Show View来添加各种透视图. 调试程序的时候可以在代码右边双

三大特性:封装,继承,多态

透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础. 三大特性是:封装,继承,多态 所谓封装: 也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏.封装是面向对象的特征之一,是对象和类概念的主要特性. 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体.在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问.通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对

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

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

黑马程序员-基础加强-泛型

Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter).声明的类型参数在使用时用具体的类型来替换. 这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. Java语言引入泛型的好处是安全简单. 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的"任意化","任意化"带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者

初识JAVA(【面向对象】:pub/fri/pro/pri、封装/继承/多态、接口/抽象类、静态方法和抽象方法;泛型、垃圾回收机制、反射和RTTI)

JAVA特点: 语法简单,学习容易 功能强大,适合各种应用开发:J2SE/J2ME/J2EE 面向对象,易扩展,易维护 容错机制好,在内存不够时仍能不崩溃.不死机 强大的网络应用功能 跨平台:JVM,字节码 两个命令: javac helloworld.java:将Java文件编译为字节码的.class文件 java helloworld:运行Java程序...??暂时这么认为 数据类型: 普通数据类型:int a=3; 对象数据类型:使用关键字new,String s=new String("

面向对象的三大特性---封装继承多态

面向对象的三大特性---封装继承多态 首先我们来创建一个控制台程序 新建一个父类Person 创建一个子类继承父类Person 子类: main函数: 输出结果: 根据结果显示创建子对象,首先调用父类的构造函数在调用子类的构造函数. 继承的传递性 例如: A:B,B:C,则A:C ⅰ.继承过来之后被隐藏,有意隐藏加一个关键字"new",如果加了关键字"new",就告诉子类,父类里面的sayHi只能被隐藏,不能被覆写  ⅱ.继承过来之后被覆写/重写,覆写需要在父类里面

类与对象 面向对象和面向过程对比 面向对象三大特征:封装 继承 多态

 初识面向对象 面向过程: 一切以事务的发展流程为中心. 面向对象: 一切以对象为中心. 一切皆为对象. 具体的某一个事务就是对象 打比方: 大象进冰箱 步骤: 第一步, 开门, 第二步, 装大象, 第三步, 关门 面向对象:大象, 你进冰箱. 此时主语是大象. 我操纵的是大象. 此时的大象就是对象 1. 面向过程: 一切以事物的流程为核心. 核心是"过程"二字, 过程是指解决问题的步骤, 即, 先?干什么, 后干什么. 基于该思想编写程序就好比在编写一套流水线. 是一种机械 式的编程

OOP三大核心封装继承多态

OOP支柱 3 个核心:封装 继承 多态 封装就是将实现细节隐藏起来,也起到了数据保护的作用. 继承就是基于已有类来创建新类可以继承基类的核心功能. 在继承中 另外一种代码重用是:包含/委托,这种重用不是父子类的继承关系,而是一个类定义为另一个类的成员变量. 一个简单的例子,汽车和收音机,汽车里面有一个收音机,不能说继承,不符合逻辑,只能说是一种对象包含了另一个对象.汽车对象中调用了收音机对象中的方法. 多态就是同一请求,不同的响应操作. 多态 同一种方式处理相关对象的能力. 相同的请求操作不同