# 关于利用里氏代换原则处理动画类
在项目中进行动画的实现的时候,为了方便,通常会创建一个虚类,然后让其子类继承其父类的方法并进行重写,这样,父类便可以让子类进行其初始化,并且父类可以调用其子类的方法。
{首先创建一个虚类,这里定义为SourceView,然后创建其两个子类,重写其方法,最后由子类进行初始化初始化出来一个父类的对象,让父类的这个对象调用子类的方法}
`//
// SourceView.h
// 里氏代换原则
//
// Created by 程磊 on 15/5/14.
// Copyright (c) 2015年 程磊. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface SourceView : UIView
/**
* 定义一个函数方法,不进行具体的操作
*/
- (void)show;
- (void)hide;
@end
`//
// SourceView.m
// 里氏代换原则
//
// Created by 程磊 on 15/5/14.
// Copyright (c) 2015年 程磊. All rights reserved.
//
#import "SourceView.h"
@implementation SourceView
- (void)hide{
}
- (void)show{
}
@end
`//
// SonView1.h
// 里氏代换原则
//
// Created by 程磊 on 15/5/14.
// Copyright (c) 2015年 程磊. All rights reserved.
//
#import "SourceView.h"
@interface SonView1 : SourceView
@end
`//
// SonView1.m
// 里氏代换原则
//
// Created by 程磊 on 15/5/14.
// Copyright (c) 2015年 程磊. All rights reserved.
//
#import "SonView1.h"
@implementation SonView1
/**
* 重写父类的方法
*/
- (void)hide{
NSLog(@"SonView1 hide");
}
- (void)show{
NSLog(@"SonView1 show");
}
@end
`这样,在viewController中便可以这样进行初始化`
`//
// ViewController.m
// 里氏代换原则
//
// Created by 程磊 on 15/5/14.
// Copyright (c) 2015年 程磊. All rights reserved.
//
#import "ViewController.h"
#import "SourceView.h"
#import "SonView1.h"
#import "SonView2.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//定义一个虚类,然后在初始化的时候用其子类进行初始化,这样的话,在进行初始化完成之后可以调用子类的方法
SourceView *sourceView = [[SonView1 alloc] initWithFrame:CGRectMake(10, 100, 100, 100)];
sourceView.backgroundColor = [UIColor redColor];
[self.view addSubview:sourceView];
}
@end
iOS- 利用里氏代换原则处理动画类的继承问题
最新推荐文章于 2015-09-20 22:57:03 发布