黑马程序员——面向对象编程三大特性

黑马程序员——面向对象编程三大特性

------- android培训、IOS培训、期待与您交流! ----------

面向对象编程三大特性:封装,继承,多态,(抽象)

***封装的概念与原理***

封装是面向对象的特性之一

封装的好处:降低数据被无用的可能性,保证数据安全性

不封装的缺点:会把自己的属性暴露给外部,失去对该属性的管理权

封装原理:实例变量默认只能被当前类的对象方法访问

**封装实现**

定义设置实例变量(setter)方法和访问实例变量(getter)方法

1)setter(设置器)

在开发过程中,考虑到安全性要求,一般不在成员变量面前使用@public、@protected等关键字修饰,而是使用set方法来为对象提供成员变量的值。在set方法内部可以对一些不合理的赋值进行过滤筛选

set方法作用:为外界提供一个设置成员变量值的方法

命名规范:

1)方法名必须以set开头

2)set后面跟上成员变量名称,首字母大写:_name    setName

3)返回值一定是void,不能有返回值

4)一定要接受一个参数,而且参数类型需要成员变量的类型一致

5)形参名不能和成员变量名一样(官方推荐成员变量名前加_)

对set中,成员变量设置值,要用set方法

2)getter(访问器)

命名规范:

1)一定有返回值,返回值类型和成员变量一致

2)方法名和成员变量一样(去掉下划线的)

3)不需要接受任何参数

4)get方法实现中,一定是返回实例变量值

5)是一个对象方法

以后获取值,统一使用get方法

 1 #import <Foundation/Foundation.h>
 2 @interface Person:NSObject
 3 {
 4    //年龄
 5    int _age;
 6    //身高
 7    float _height;
 8 }
 9 //给每一个实例变量定义两个方法:设置变量的方法(set),获取变量值得方法(get)
10 //set规范:
11 /*
12 1)一定是一个对象方法
13 2)返回值一定是void,不能有返回值
14 3)方法名必须以set开头
15 4)set后面跟上成员实例变量名称,首字母大写
16 5)一定有参数,而且参数类型需要成员变量的类型一致
17 6)形参名一般是去掉下划线的实例变量名
18 7)形参名不能和实例变量同名
19 8)set方法实现中,一定要用形参给实例变量赋值
20 */
21 -(void)setAge:(int)age;
22 -(void)setHeight:(float)height;
23 /*get命名规范:
24 1)一定有返回值,返回值类型和成员变量一致
25 2)方法名和成员变量一样(去掉下划线的)
26 3)不需要接受任何参数
27 4)get方法实现中,一定是返回实例变量值
28 5)是一个对象方法
29 */
30 -(int)age;
31 -(float)height;
32 @end
33 @implementation Person
34 //set方法实现
35 //set方法实现中,一定要用形参给实例变量赋值
36 -(void)setAge:(int)age{
37    _age=age;
38    }
39 -(void)setHeight:(float)height{
40    _height=height;
41    }
42 //get方法实现
43 //get方法实现中,一定是返回实例变量值
44 -(int)age{
45    return _age;
46    }
47 -(float)height{
48    return _height;
49    }
50 @end
51 int main (int argc, const char *argv[])
52 {
53     NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
54     //在此处输入Objective-C代码
55    Person *p=[Person new];
56    [p setAge:20];
57    [p setHeight:2.12f];
58    NSLog(@"%d,%.2f",[p age],[p height]);
59     [pool drain];
60     return 0;
61 }

类的继承与派生

***继承***

概念:类B继承了类A, 那么类B具有类A的所有属性和方法。A派生了B

优缺点:

继承的好处: 子类拥有父类的所有成员变量和方法, 减少重复代码. 建立类之间的关系。

继承的缺点: 代码耦合性太强 (类之间的关系太紧密, 如果某个类坏了, 另一个类会受影响)。

NSObject是基类, 几乎所有的类最终都是继承于它。

继承注意事项:

1、子类不能定义和父类同名的变量,但可以继承父类的变量

2、OC类支持单一继承,不支持多继承,只能有一个父类

3、OC支持多层继承

***多态***

概念:多态就是某一类事物的多种形态,不同的对象以自己的方式去响应相同名称方法的能力成为多态

条件:有继承关系,有方法重写,

父类的指针指向子类函数的对象

Dog *g=[Dog new];

Zeo *z=[Dog new];

优点:简化编程接口,容许在类与类之间重用一些习惯性的命名

@interface Animal:NSObject

-(void)run;

@end

@implementation Animal

-(void)run{

NSLog(@"动物在跑");

}

@end

********狗*******

子类继承不用再声明了

@interface Dog:Animal

-(void)run;//(可以不用写)

@end

@implementation Dog

-(void)run{

NSLog(@"狗在跑");

}

@end

********猫*******

@interface Cat:Animal

-(void)run;//(可以不用写)

@end

@implementation Cat

-(void)run{

NSLog(@"猫在跑");

}

@end

**********不使用多态************

Animal *ani=[Animal new];

[ani run];

Dog *dog=[Dog new];

[dog run];

Cat *cat=[Cat new];

[cat run];

***********使用多态**********

//父类指针指向子类对象

Animal *a1=[Dog new];

[ani run];//狗在跑

Animal *a2=[Cat new];

[ani run];//猫在跑

多态注意:

1、如果存在多态,父类是可以访问子类特有的方法

但是编译器会报错,需要强制转换:[(子类名 *)指针名 子类特有属性];

2、如果不存在多态,父类不可以访问子类特有方法

------- android培训、IOS培训、期待与您交流! ----------

时间: 2024-12-18 02:24:47

黑马程序员——面向对象编程三大特性的相关文章

黑马程序员--面向对象的三大特性-我之见解

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- ------封装------- 1.什么是封装: 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式 2.封装的好处: 将变化隔离.(不管里面怎么变,使用者不需要知道) 便于使用.(使用者只需按照一定的方法使用就可以了) 提高重用性

黑马程序员-----面向对象编程概念

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ----- 第一讲   面向对象编程概念 本小节知识点: 1.[了解]编程的实质是什么? 2.[掌握]面向对象的基本概念 类    包    接口      继承      多态 ( 面向过程是强调我们要做一件事情有哪些步骤, 面向对象是强调我们做一件事

黑马程序员-面向对象的特征

Java面向对象 面向对象是一种程序设计方法,或者是程序设计规范,其基本思想是使用对象.类.继承.封装.多态等基本概念来进行程序设计. 面向对象是一种符合人们思考习惯的思想,可以将复杂的事情简单化,将程序员从执行者转换成了指挥者 完成需求时: ? 先要去找具有所需的功能的对象来用. ? 如果该对象不存在,那么创建一个具有所需功能的对象. ? 这样简化开发并提高代码的复用. 面向对象的开发过程其实就是不断的创建对象,使用对象,指挥对象做事情.设计的过程其实就是在管理和维护对象之间的关系. 面向对象

黑马程序员——网络编程篇

------- android培训.java培训.期待与您交流! ---------- 概述   1.网络模型        (1).OSI参考模型        (2).TCP/IP参考模型   2.网络通讯要素         (1).IP地址        (2).端口号         (3).传输协议    3.过程        1,找到对方IP. 2,数据要发送到对方指定的应用程序上.为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识. 为了方便称呼这个数据,叫做端口(逻

黑马程序员-面向对象-Object类

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>.<a href="http://edu.csdn.net"target="blank">.Net培训</a>.期待与您交流! ---------------------- 一.Object类中的equals(

黑马程序员-面向对象-多态

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>.<a href="http://edu.csdn.net"target="blank">.Net培训</a>.期待与您交流! ---------------------- 一多态的前提:(1)要有继承关系(或

黑马程序员 网络编程 UDP与TCP

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------/* 网络编程分为两种模式:TCP和UDP 连接互联网的计算机以亿计,为了唯一的标识出每台电脑,互联网就给每台电脑分配一个 唯一独立的ip地址,通过这个ip地址就可以进行计算机之间的数据交换 我们计算机交换的数据功能我们在java中把它封住成一个叫Socket的类, 简称套接字, 端口号:计算机数据的交换一般都是电脑上的程序来维护的,而电脑上又运

黑马程序员 面向对象(上) 封住,继承,多态,以及this和super的用法

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ----------------------/* * 一.类的继承: 当多个类出现了相同的属性和行为时,我们可以把这些类中相同的属性和行为抽取出来 成为独立的一个类,然后让这些类分别去继承抽取类,再根据自己需求去实现别的功能 这样大大的增强的相同代码的复用性,也使代码变得美观 我们把这个抽取类叫做这些类的父类,这些类叫做抽取类的子类,子类是可以继承父类中 的所有信息. 在Java中所有的类

黑马程序员——面向对象

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 本文是对java面向对象概念的总结和回顾.面向对象是java语言的一个重要特点,只有真正理解了面向对象的基本概念,并应用面向对象的概念编写java程序,才算是真正的java程序员. 一.面向对象的概念 面向对象是相对面向过程而言,面向对