Object-C 学习笔记(八)---面相对象(继承)

原创 2013年12月03日 12:04:10

类:是事物共性的抽象.

对象:是一个事物的具体表现.


继承特点:

(1)Object-C是一种单继承的面相对象语言.

(2)提高代码的复用性.

(3)提高代码的扩展性


缺点:提高了代码的耦合度.


例子:

//
//  Animal.h
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Animal : NSObject

@property(retain,nonatomic)NSString* name;//名字
@property(assign,nonatomic)NSInteger age;//年龄
@property(retain,nonatomic)NSString* color;//毛色

-(void)play;
-(void)sleep;
-(Animal *)initWithName:(NSString*)name andAge:(NSInteger) age andColor:(NSString*) color;
@end

//
//  Animal.m
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import "Animal.h"

@implementation Animal

@synthesize name = _name,age = _age,color = _color;

-(void)play
{
    NSLog(@"正在玩耍");
}

-(void)sleep
{
    NSLog(@"正在睡觉");
}

-(Animal *)initWithName:(NSString*)name andAge:(NSInteger) age andColor:(NSString*) color
{
    if (self = [super init]) {
        self.name = name;
        self.age = age;
        self.color = color;
    }
    return self;
}

@end

//
//  Dog.h
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import "Animal.h"

@interface Dog : Animal
-(void)watchDoor;
@end

//
//  Dog.m
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import "Dog.h"

@implementation Dog
-(void)watchDoor
{
    NSLog(@"正在看门口");
}
@end

//
//  Cat.h
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import "Animal.h"

@interface Cat : Animal
-(void)catchMouse;
@end

//
//  Cat.m
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import "Cat.h"

@implementation Cat
-(void)catchMouse
{
    NSLog(@"猫正在抓老鼠");
}
@end

//
//  main.m
//  Extend
//
//  Created by 5016 on 13-12-3.
//  Copyright (c) 2013年 dradon. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Cat.h"
#import "Dog.h"

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

    Cat *cat = [[Cat alloc] initWithName:@"猫咪" andAge:2 andColor:@"黄色"];
    NSLog(@"这是一只%@,%ld岁,颜色是%@色",cat.name,cat.age,cat.color);
    [cat play];
    [cat sleep];
    [cat catchMouse];
    
    NSLog(@"--------------------------");
    Dog *dog = [[Dog alloc] initWithName:@"考拉" andAge:4 andColor:@"白色"];
    [dog play];
    [dog sleep];
    [dog watchDoor];
    
    
    return 0;
}

猫和狗继承了动物类,于是可以继承动物类的公共类的方法与属性.

private 不能被继承

protect 只能被自己和直接继承的子类使用

public  任何地方可以调用


面相对象的抽象、封装、继承、多态的理解

面向对象技术是目前流行的系统设计开发技术,它包括面向对象分析和面向对象程序设计。面向对象程序设计技术的提出,主要是为了解决传统程序设计方法——结构化程序设计所不能解决的代码重用问题。   面向对象的...
  • welshon
  • welshon
  • 2013年12月20日 12:44
  • 1197

面向对象中的继承

一、继承 1.概述:多个类中存在相同的属性和行为,将这些类抽取的一个单独的类中 class 子类名 extends 父类名 {} 2.被继承的类:父类/超类/基类 3.继承的类:子类/扩展类 ...
  • Michaelia_
  • Michaelia_
  • 2017年07月18日 17:40
  • 98

Object-C 学习笔记(九)---面相对象(多态)

多态:父类引用指向于子类对象,产生多态,子类方法覆盖父类方法. 注意:多态只作用于方法,对成员属性没有起作用. 例子: // // Animal.h // Extend // // Cre...
  • dragonzard
  • dragonzard
  • 2013年12月03日 12:23
  • 467

python中的多继承和多态

继承 就是一个子类继承多个父类: 多继承的例子,如下: class Base(object): def test(self): print("------base") class A(B...
  • chenjuan0530
  • chenjuan0530
  • 2017年11月09日 16:20
  • 74

面相对象和面向过程

编程的世界里也需要面向对象。我靠!是面向对象编程?你看的没错就是面向对象编程;不过此对象非彼对象。广大的编程人员也不要因为此对象而失望,有鼓励师哦! 岗位:程序员鼓励师 任职要求: 1...
  • Zllvincent
  • Zllvincent
  • 2016年02月14日 21:27
  • 1225

浅谈面相对象思想

不得不承认前段时间有点显得无聊,
  • u012045079
  • u012045079
  • 2014年08月10日 12:50
  • 605

C++面相对象三大特性

封装 【封装复杂,对外留出简单接口】 封装是在设计类的一个基本原理,是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与对数据进行的操作进行有机的结合,形成“类”,其中数据和函...
  • yixiantian7
  • yixiantian7
  • 2014年03月30日 18:44
  • 2201

面相对象设计总结

软件就是现实世界的抽象,最近经过一些重构不断的认识到封装变化,接口隔离,开闭原则,针对接口编程,能使用组合尽量不使用继承的设计原则。 关于OOD六大原则**1. 开闭原则,这个是比较具有理想主义色彩的...
  • micro_hz
  • micro_hz
  • 2016年04月06日 11:34
  • 599

面相对象和面向过程的区别

(1)借用一本书里的比喻 写程序就好像是在看电视 用面向过程就等于是要先自己制造一台电视,然后再收看节目; 而面向对象则是直接去商店买一台电视收看。 面向对象编程省去了很多不需要知道的...
  • Ihanos
  • Ihanos
  • 2015年03月21日 13:48
  • 919

object-c 学习第二天(类对象和方法)

学习语言我是在官方的英语文档上,当然也有很多中文的文档也很不错,可是我懒得找了,这个是官方的链接https://developer.apple.com/library/mac/#referenceli...
  • zc55803903
  • zc55803903
  • 2012年08月06日 12:54
  • 4656
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Object-C 学习笔记(八)---面相对象(继承)
举报原因:
原因补充:

(最多只允许输入30个字)