Objective-c 继承,多态,封装

.m文件

//

//  main.m

//  Objective-c 继承

//  Created by 非凡 on 15/10/10.

//  Copyright (c) 2015年 非凡. All rights reserved.

//

#import <Foundation/Foundation.h>

//引入其他类的头文件是让你实力化的对象认识这是什么鬼

//引入Car头文件

#import "Car.h"

//引入zilei头文件

#import "zilei.h"

//引入Father头文件

#import "Father.h"

//引入Son头文件

#import "Son.h"

//引入chievement头文件

#include "chievement.h"

//引入Jisuan头文件

#include "Jisuan.h"

int main(int argc, const char * argv[]) {

@autoreleasepool {

NSLog(@"--------------------------------------------");

//父类

//创建对象或实例化对象

Car* _car=[Car new ];

//调用实例化后的方法

[_car setNumber:4];

[_car run];

//继承后的子类,子类可以继承父类的方法和属性

//创建对象或实例化对象

zilei* zx =[zilei new];

//调用实例化后的方法

[zx setNumber:5];

[zx setName:@"雪弗莱"];

[zx setSpeed:80];

[zx run ];

//父亲儿子跑跳练习

NSLog(@"--------------------------------------------");

//创建对象或实例化对象

Father* ability1=[Father new];

//调用实例化后的方法

[ability1 setNumber:2];

[ability1 run];

[ability1 jump];

//创建对象或实例化对象

Son* ability2=[Son new];

//调用实例化后的方法

[ability2 set_Number:1];

[ability2 run];

[ability2 jump];

[ability2 run];

//父类的指针指向子类,调用的是子类的方法

//多态应用

//多态以类作为参数,那么就只能输入类名,其他参数均无效

NSLog(@"-------------------------------------");

[ability2 duotai:ability1];

NSLog(@"--------------------------------------------");

//练习2练习封装(属性的封装)

//创建对象或实例化对象

chievement* perform=[chievement new];

//调用实例化后的方法

[perform setOc_achievement:30];

[perform setC_achievement:20];

[perform setZongfen];

[perform setPingjunfen];

[perform printf];

//调用返回值

// [perform setZongfen];

//[perform setPingjunfen];

//打印返回值

NSLog(@"总和为:%.2f 平均值为:%.2f",[perform setZongfen],[perform setPingjunfen]);

NSLog(@"--------------------------------------------");

//练习三

//创建对象或实例化对象

Jisuan* jieguo=[Jisuan new];

//调用实例化后的方法

// 输入参数

[jieguo setA:13 setB:5];

NSLog(@"和值为:%i,平均值为:%i",[jieguo Hezhi], [jieguo Pingjunshu]);

}

return 0;

}

zilei.h文件

#import <Foundation/Foundation.h>

//引入Car父类头文件,让子类知道Car是什么。

#import "Car.h"

//子类也可以有自己的属性和自己的方法

@interface zilei :Car{

NSString * name;

int Speed;

}

//设置属性

-(void)setSpeed:(int)newSpeed;

-(void)setName:(NSString*)newName;

//设置方法

-(void)run;

-(void)_run;

@end

zilei.m文件

//

//  zilei.m

//  Objective-c 继承

//

//  Created by 非凡 on 15/10/10.

//  Copyright (c) 2015年 非凡. All rights reserved.

//

#import "zilei.h"

@implementation zilei

-(void)run{

//super的意思是父类,super可以调用父类的方法

//[super run];

//self 的意思是本身,self可以调用本类中的方法

[self _run];

//NSLog(@"%i车是%@,的速度是%i",_number,name,Speed);

}

-(void)setSpeed:(int)newSpeed{

Speed=newSpeed;

}

-(void)_run{

NSLog(@"%i车是%@,的速度是%i",_number,name,Speed);

}

-(void)setName:(NSString *)newName{

name=newName;

}

@end

Father.m文件

#import "Father.h"

@implementation Father

-(void)setNumber:(int)newNumber{

number=newNumber;

}

-(void)run{

NSLog(@"父亲和儿子都能跑");

}

-(void)jump{

NSLog(@"父亲能跳%i米",number);

}

//多态用法

//当你将类作为参数类型时,就是对不同的方法及属性响应不同

-(void)duotai:(Father*)newduotai{

NSLog(@"父亲能跳%i米",number);

}

@end

时间: 2024-12-27 23:08:30

Objective-c 继承,多态,封装的相关文章

python面向对象之继承/多态/封装

老师说,按继承/多态/封装这个顺序来讲. 子类使用父类的方法: #!/usr/bin/env python # coding:utf-8 class Vehicle: def __init__(self,name,speed,load,power): self.name = name self.speed = speed self.load = load self.power = power def run(self): print("开动啦.") class Benz(Vehicle

Python全栈开发——面向对象的三大特性(继承 &amp; 多态 &amp;封装)

1.继承 1.两层意思改变和扩展(详细看随笔继承和组合) 2.多态(体现在运行时的状态) 1.不同的类可以调用相同的方法,得到不同的结果 2.实际上是继承的一种体现机制 class H2o: def __init__(self,name,temperature): self.name=name self.temperature=temperature def turn_ice(self): if self.temperature<0: print('温度太低,变成[%s]' %self.name

继承 多态 封装

1.继承用单词extends.一般子类可以继承父类的方法和属性,但是私有的能继承,但子类不能使用,在子类访问父类的构造方法需要用到super关键字,一般super放在mian方法的第一行,并且只要继承,系统会默认调用父类的无参构造方法.并且如果是连续继承,无参构造方法会从最上面层的父类开始调用.如果调用本类的方法,则使用this关键字. 2.多态,指的是多种形式.它使用不同的实例而执行不同的操作.多态包括方法的重写和方法的重载,方法的重写是使用继承时对父类的方法进行重写,比如形状有绘图的方法,在

【Python学习之旅】---多态(类的相关知识,面向对象三大特性:继承-多态-封装)

class Name: __a='你是猪' #封装变量a def __init__(self,name): self.name=name def get_name(self): print('我叫%s' %self.name) n1=Name('陈宇霞')print(Name.__dict__) #查看类属性字典print(n1._Name__a) #可以通过此种方式调用__a ,没有真正的封装 #执行结果: {'__module__': '__main__', '_Name__a': '你是猪

【Python学习之旅】---封装与反射(类的相关知识,面向对象三大特性:继承-多态-封装)

#第一层封装:定义类#第二层封装:区分内外,有些属性只能内部使用,外部不能 class Name: __a='你是猪' #封装变量a def __init__(self,name): self.name=name def get_name(self): print('我叫%s' %self.name) n1=Name('陈宇霞')print(Name.__dict__) #查看类属性字典print(n1._Name__a) #可以通过此种方式调用__a ,没有真正的封装 #真正的封装:区分内外,

OOP三大核心封装继承多态

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

继承、封装、多态

学习完类与对象终于认识到什么是类,什么是对象了.接下来要看的就是java的三大特征:继承.封装.多态. 一.封装(数据的隐藏) 在定义一个对象的特性的时候,有必要决定这些特性的可见性,即哪些特性对外部是可见的,哪些特性用于表示内部状态.通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏. 1.1.封装的步骤    1).使用private 修饰需要封装的成员变量.        2.)提供一个公开的方法设置或者访问私有的属性             设置 通过s

封装继承多态到底讲的是什么

封装继承多态到底讲的是什么 封装.继承.多态并不是针对C#语言提出来的,他是一个在面向对象思想下产生的一个概念.所以想要弄明白封装.继承.多态,首先就要先了解面向对象概念. 封装:当我们提及面向对象的时候,这个对象怎么来?就是通过我们人为的封装得来.封装就是把一些特征或功能组合到一个抽象的对象上.就比如说电脑:它的特征是有一个显示屏,有一个主机,有鼠标和键盘等等.功能有计算等.那我们把这些特征和功能组合到“电脑”这个抽象的名词上时,“电脑”于是就有了这些特征和功能.但这个“电脑”不是实物,它代表

Java中的继承、封装、多态的理解

Java中的继承.封装.多态 继承的理解: 1.继承是面向对象的三大特征之一,也是实现代码复用的重要手段.Java的继承具有单继承的特点,每个子类只有一个直接父类. 2.Java的继承通过extends关键字来实现,实现继承的类被称为子类,被继承的类称为父类(有的也称其为基类.超类),父类和子类的关系,是一种一般和特殊的关系.就像是水果和苹果的关系,苹果继承了水果,苹果是水果的子类,水果是苹果的父类,则苹果是一种特殊的水果. 3.Java使用extends作为继承的关键字,extends关键字在

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

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