类和对象

Posted zhchoutai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类和对象相关的知识,希望对你有一定的参考价值。

面向对象编程

基本:

  • 概念:对象 类 封装 多态
  • 主要语言有 C++,Java,OC

面向过程与面向对象的差别

面向过程 面向对象
特点 分析步骤,实现函数 分析问题找出參与并得出对象及其作用
側重 实现功能 对象的设计(详细指功能)
样例 C语言 OC,C++,java

基本代码:

    // OC打印
    NSLog(@"Lanou");

    // NSInteger 整型,CGFloat 浮点型,NSString 字符串
    NSInteger i = 100;
    NSLog(@"i = %ld",i);
    CGFloat f = 3.14;
    NSLog(@"f = %g",f);

    // OC的字符串能够放中文
    NSString *str= @"哟哟";
    NSLog(@"%@",str);

    // OC的数组
    // 与for循环遍历一样,直接用NSLog进行遍历
    NSArray *arr = @[@"1",@"2",@"3"];
    NSLog(@"%@",arr);
    for (NSInteger i = 0 ; i < 3; i++) {
        NSLog(@"%@",arr[i]);
    }

类和对象

  • 类和对象是面向对象编程的核心
  • 类就是具有同样特征以及行为事物的抽象

对象

  • 对象是类的实例
  • 类是对象的类型

OC中类的定义

  • 先定义类,再创建对象,然后使用对象
  • 定义有两个部分,接口与实现(注意分开写)
  • 文件: .h的为接口文件, .m的为实现文件
    接口
@interface Student : NSObject
@end

实现

// 相应的实现文件
@implementation Student

创建对象

  • 不论什么对象都要占用空间
  • 创建对象分为两步
    • ①分配空间
    • ②初始化
  • 初始化
// 1.分配空间
Student *stu = [Student alloc];
// 2.初始化
stu = [stu init];
// 能够把上两个步骤合成一个语句
Student *stu = [[Student alloc] init];

初始化中返回的self指的是返回完毕的自己

- (id)init
{
    _stuName = @"俊宝宝";
    _stuSex = @"女";
    _stuHobby = @"男";
    _stuAge = 20;
    _stuScore = 100;
    return self;
}

使用对象

    Student *stu = [[Student alloc] init];
    [stu sayHi];

实例变量操作

  • 实例变量初始化的时候仅仅做少量的设置,后期完好
  • 实例变量的可见度分为三种
    • @public 公有
    • @private 私有
    • @protected 受保护的
@interface Student : NSObject
{
    // 成员变量的可见度
    @public
    // 成员变量,或实例变量
    NSString *_stuName; // 名字
    NSInteger _stuAge;  // 年龄
    NSString *_stuSex;  // 性别
    CGFloat _stuScore;  // 分数
    NSString *_stuHobby;// 爱好
}
@end

操作成员

    // 操作成员变量
    // 对象通过->来訪问自己的成员变量
    NSLog(@"%ld",stu -> _stuAge);
    // 改动年龄
    stu -> _stuAge = 100;
    NSLog(@"%ld",stu -> _stuAge);
    // 改动姓名,直接改动字符串直接赋值
    stu -> _stuName = @"切克闹";
    NSLog(@"%@",stu -> _stuName);

注意:public修饰的实例变量,能够直接使用” ->”訪问

部分代码

main.m

int main(int argc, const char * argv[]) {
    // 通过手机的类,创建对象,而且对对象的成员变量进行改动
    MobilePhone *mPhone = [[MobilePhone alloc] init];
    mPhone -> _phoneBrand = @"samsung";
    mPhone -> _phoneColor = @"白色";
    mPhone -> _phoneModel = @"S100";
    mPhone -> _phonePrice = 4800;
    mPhone -> _phoneSize = 1080;
    NSLog(@"品牌为%@,颜色:%@,型号:%@,价格:%ld,屏幕:%ld",mPhone->_phoneBrand,mPhone->_phoneColor,mPhone->_phoneModel,mPhone->_phonePrice,mPhone->_phoneSize);
     return 0;
}

MobilePhone.h

@interface MobilePhone : NSObject
{
    @public
    NSString *_phoneBrand;
    NSString *_phoneModel;
    NSInteger _phoneSize;
    NSString *_phoneColor;
    NSInteger _phonePrice;
}
- (void)buyPhone;
- (void)call;
- (void)sendMessage;
- (void)surfInternet;
- (void)watchVideo;

// 写一个用来打印所有信息的功能
- (void)sayHi;

@end

MobilePhone.m

@implementation MobilePhone
- (void)buyPhone
{
    NSLog(@"买了个手机");
}
- (void)call
{
    NSLog(@"打了个电话");
}
- (void)sendMessage
{
    NSLog(@"发了个短信");
}
- (void)surfInternet
{
    NSLog(@"上了个网");
}
- (void)watchVideo
{
    NSLog(@"看了个视频");
}
// 重写电话的初始化方法
- (id) init
{
    _phoneBrand = @"Apple";
    _phoneColor = @"red";
    _phoneModel = @"S5";
    _phonePrice = 4000;
    _phoneSize = 1080;
    return self;
}
- (void)sayHi
{
    NSLog(@"%@ , %@ ,%@  ,%ld ,%ld ,",_phoneBrand,_phoneColor,_phoneModel,_phonePrice,_phoneSize);
}

文章总结了今天学习的基本内容

以上是关于类和对象的主要内容,如果未能解决你的问题,请参考以下文章

使用CSS伪类和伪对象实现dl;dt+dd在一行显示

JAVA方法的定义

10方法的定义和重载和递归

JavaSE:类和对象

如何从片段内的列表视图打开链接网址?

VSCode自定义代码片段12——JavaScript的Promise对象