博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day1: Objective-C概述、面向对象编程、类和对象、实例变量操作
阅读量:4219 次
发布时间:2019-05-26

本文共 4082 字,大约阅读时间需要 13 分钟。

Objective-C概述

       Objective-C 简称OC  扩充自C语言的面向对象编程语言。

       是OS X 和 IOS 的主要编程语言。

发展时间进度:

       1980年初发明了OC语言-->1988年NEXT公司使用OC开发-->1996年OC成为苹果主要编程语言。

OC语言的特点:

      OC语言是C语言的超集,允许在OC中使用C语言源代码,OC中兼容C和C++语言。

      具备完善的面向对象特性。

      类库丰富。

面向对象编程:

      面向对象编程:OOP(Object Oriented Programming)。

      面向对象语言:C++  java  C#。

      概念:对象、类、封装、继承、多态等等。

面向对象与面向过程的区别:

      面向对象和面向过程是两种不同的编程思想,前者以对象为中心,后者以事件为中心。

      特点:面向过程分析解决问题步骤,实现函数,依次调用函数;面向对象:分析工程中参与的对象,各个对象的作用,多个对象协作完成任务;

      侧重点:面向过程:实现功能;  面向对象:对象的设计;

      语言举例:面向过程:C语言       面向对象:OC  C++  java等。

      面向对象具有良好的可扩展性、可重用性。类和对象是面向对象的核心。定义类,创建对象,使用对象。

OC中类的定义:

      面向对象编程中,使用对象完成程序。

      开发中先定义类,再创建对象,然后使用对象。

      定义类包含两部分:接口部分和实现部分,1、接口部分:对外声明类的特征和行为,.h文件;2、实现部分:对内实现行为,.m文件。

      接口部分包含:类名、父类名、实例变量、方法等。

      实现部分:实现类的行为。

      类是对象的抽象,对象是类的体现。

创建对象分两部分:分配内存空间和初始化,初始化即为类的对象设置初始值。

实例变量的三种可见度:

      @public      公有的   作用域是所有

      @protected   受保护的   默认的  作用域在本类和所有子类

      @private    私有的   作用域只在本类  属性生成的实例变量是私有的

OC中命名规则:

      类命名规则:首字母大写的驼峰法命名规则;

      方法命名规则:首字母小写的驼峰法命名规则;

      对象命名规则:跟方法命名规则相同 。    

id和instancetype的比较:

       1、相同点:这两个类型都表示泛型类型,表示的是对象类型;

       2、不同点:id在编译期不确定它的类型,instacetype在编译期就已经知道它的类型了;   

            id s=[[Person alloc]init]  只有到了运行期才把id判定为Person类型; 

       3、id既可以作为返回值类型使用,也可以作为参数类型使用;instancetype只能作为返回值类型使用,不能作为参数类型使用。

     

      init在java中叫构造器方法,在OC中叫初始化方法。

第一天课堂内容笔记 lessonOC01day:

Person.h:

#import 
//interface:接口 .h文件是类的声明文件,也叫接口文件//类的声明以@interface开头,以@end结束//Person是我们自己的定义的类的名字//:表示继承关系//NSObject 是父类,NSObject是OC中根类,是所有类的父类,也是最大的一个类。OC中其他类都直接或者间接的继承NSObject类。@interface Person : NSObject{ //父类后加一个大括号,大括号就是声明类的特征的地方,也叫做类的实例变量。其他语言叫成员变量。 //OC中有一个类专门表示字符串,它就是:NSString类 //OC中除了基本数据类型,其他所有都是指针类型。 @public //公共的,默认是protected,私有是provate NSString *_name; //声明名字,XCODE4.0之前声明name前需要加_(_name); int _age; //除了基本数据类型外,其他需要用指针类型 }//***方法的声明在大括号后,end前***-(void)sayHi;//end 结束@end

Person.m:

#import "Person.h"//.m文件是类的实现文件(苹果不开源就是我们看不到.m文件,只能看到.h文件)//在.m中声明的方法必须实现@implementation Person//id表示泛型,(泛型:除了基本数据类型之外,他能表示所有对象类型)//OC中有返回值,同样用return;-(id)init{ //子类重写父类的方法可以不对这个方法再次声明。    //OC中 @"" 才表示一个字符串    _name=@"李四";    _age=30;    //self表示当前类的对象。当前对象是正在调用init方法的对象。    return self;}-(void)sayHi{//    self->_name=@"王五";    NSLog(@"%@ say hello",_name);//@表示对象,对对象进行站位}@end

Audi.h

#import 
@interface Audi : NSObject{ NSString *logo;//标志 NSString *color;//颜色 float price;//价格}-(void)run;@end//一个文件可以创建很多类,文件跟类没有关系@interface Phone : NSObject{ NSString *_brand; NSString *_os; NSString *_color; float _price;}-(void)callSomeOne;-(void)sentMessage;@end

Audi.m:

#import "Audi.h"@implementation Audi-(void)run{    NSLog(@"audi can fly");}@end@implementation Phone-(void)callSomeOne{    NSLog(@"打电话...");}-(void)sentMessage{    NSLog(@"发信息...");}@end

main.m

#import 
#import "Person.h" //导入Person类#import "Audi.h" //导入Audi类int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... //OC里面开辟内存的方法就是alloc() //alloc的功能在堆区开辟内存,然后将首地址传给栈区的P //[]在OC中,用来调用方法,在方法调用时分两个部分,第一部分是类名或实例变量名;第二部分就是方法名 //方法前有+表示这个方法是一个类方法,又叫静态方法,需要用类的名字来调用方法; //方法前有-表示这是一个实例方法,又叫动态方法,需要用实例变量来调用 //创建一个Person类在栈区声明了一个实例变量p;Person类名调用了分配内存的方法alloc,在堆区开辟了一块内存,并将内存首地址返回存放在实例变量p中。 Person *p = [Person alloc]; //init方法是初始化方法;他的功能是给实例变量赋初始值;并且将他初始化的内存首地址进行返回。 p = [p init]; [p sayHi]; //init 合起来的写法(创建实例变量,并且初始化),alloc相当于买了一部手机,init相当于给手机初始化,alloc必须要由init,alloc只是开辟空间,init就是给实例变量设置值。系统默认init方式是清空内存(清零)。 Person *p1=[[Person alloc]init]; //_name设置为public时可以在这里修改,否则报错。 p1->_name=@"赵六"; p1->_age=18; [p1 sayHi]; /*练习4.1 定义奥迪汽车类。声明实例变量和方法,实现方法*/ Audi *Q5=[[Audi alloc]init]; [Q5 run]; /*练习4.2 定义手机类。声明实例变量和方法,实现方法*/ Phone *lenove=[[Phone alloc]init]; [lenove callSomeOne]; [lenove sentMessage]; } return 0;}/*第一天课程内容总结: 1、区分类和对象 类是具有相同特征和行为的一个抽象 对象是类生成的一个实例变量 2、类的定义 类的声明在.h文件里,类的实现在.m文件里。 声明在@interface..@end之间 实现在@implementation...@end之间 3、对象(实例)的创建 第一步有alloc分配内存,第二步给对象初始化, 如:Audi *Q5=[[Audi alloc]init]; 4、使用类里面的方法 看方法的标识,然后调用 +表示是类的方法,由类直接调用 -表示的是对象的方法,由对象调用 5、操作类里面的实例变量 公有的:@public 保护的:@protected 系统默认的 私有的:@private */

转载地址:http://yoxmi.baihongyu.com/

你可能感兴趣的文章
leetcode49. Group Anagrams
查看>>
leetcode136. Single Number
查看>>
leetcode187. Repeated DNA Sequences
查看>>
leetcode166. Fraction to Recurring Decimal
查看>>
leetcode36.Valid Sudoku
查看>>
leetcode85 maximal rectangle
查看>>
2016年半年计划~
查看>>
推荐系统简述(1)基于内容的推荐系统
查看>>
leetcode 149. Max Points on a Line
查看>>
python 小练习之山寨版markdown格式txt文件转html文件
查看>>
python小练习
查看>>
leetcode26. [Array]Remove Duplicates from Sorted Array
查看>>
leetcode 27. [Array]Remove Element
查看>>
leetcode66.[Array] Plus One
查看>>
leetcode283. [Array]Move Zeroes My Submissions Question
查看>>
leetcode292.[Array] Nim Game
查看>>
推荐系统简述(2)基于近邻推荐方法
查看>>
leetcode171.[math] Excel Sheet Column Number
查看>>
决策树知识点整理
查看>>
支持向量机知识点整理
查看>>