典型的继承例子:形状Shape为基类,继承它的类有:点类Point、圆类Circle、球体类Sphere、矩形类Rectangle、正方形类Square

        点类Point也为基类,继承它的类有:圆类Circle、球体类Sphere、矩形类Rectangle、正方形类Square

        圆类Circle也为基类,继承它的类有:球体类Sphere

        矩形类Rectangle为基类,继承它的类是:正方形类Square 

//Shape类   .h和.m文件

 //  Shape.h
// 继承
//
// Created by ma c on 15/8/11.
// Copyright (c) 2015年. All rights reserved.
// 形状类 #import <Foundation/Foundation.h> @interface Shape : NSObject
@property(nonatomic,assign)CGFloat length;
@property(nonatomic,assign)CGFloat area;
@property(nonatomic,assign)CGFloat volum;
-(void)draw;
-(void) Area;
-(void) Length;
-(void) Volum;
@end
 //  Shape.m
// 继承
//
// Created by ma c on 15/8/11.
// Copyright (c) 2015年. All rights reserved.
// 形状类 #import "Shape.h" @implementation Shape
-(void)draw
{
NSLog(@"drawing a Shape!");
}
-(void) Area{}
-(void) Length{}
-(void) Volum{}
@end

//Point类 .h和.m文件

 //  Point.h
// 继承
//
// Created by ma c on 15/8/11.
// Copyright (c) 2015年. All rights reserved.
// 点类 #import "Shape.h" @interface MyPoint : Shape
@property(nonatomic,assign) CGFloat x;
@property(nonatomic,assign) CGFloat y;
-(id)initWithX:(CGFloat)m andY:(CGFloat)n;
-(void)show;
@end
 //  Point.m
// 继承
//
// Created by ma c on 15/8/11.
// Copyright (c) 2015年. All rights reserved.
// 点类 #import "MyPoint.h" @implementation MyPoint
-(id)initWithX:(CGFloat)m andY:(CGFloat)n
{
self = [super init];
if(self)
{
_x = m;
_y = n;
}
return self;
}
-(void)draw
{
NSLog(@"drawing a point!");
}
-(void)show
{
NSLog(@"x:%.1f,y:%.1f",_x,_y);
}
@end

//圆类Circle   .h和.m文件

 //  Circle.h
// 继承
//
// Created by ma c on 15/8/12.
// Copyright (c) 2015年. All rights reserved.
// 圆类 #import "MyPoint.h" @interface Circle : MyPoint
@property(nonatomic,assign)CGFloat radius;
-(id)initWithX:(CGFloat)m andY:(CGFloat)n andRadius:(CGFloat)r;
@end
 //  Circle.m
// 继承
//
// Created by ma c on 15/8/12.
// Copyright (c) 2015年. All rights reserved.
// 圆类 #import "Circle.h"
#define PI 3.14
@implementation Circle
-(id)initWithX:(CGFloat)m andY:(CGFloat)n andRadius:(CGFloat)r
{
self = [super init];
if(self)
{
super.x = m;
super.y = n;
_radius = r;
}
return self;
}
-(void) Area
{
super.area = PI*_radius*_radius;
}
-(void) Length
{
super.length = *PI*_radius;
}
-(void)draw
{
NSLog(@"drawing a circle!");
}
-(void)show
{
[super show];
NSLog(@"radius:%.1f,area:%.1f,Length:%.1f",_radius,super.area,super.length);
}
@end

//球体类Sphere   .h和.m文件

 //  Sphere.h
// 继承
//
// Created by ma c on 15/8/12.
// Copyright (c) 2015年. All rights reserved.
// 球体类 #import "Circle.h" @interface Sphere : Circle
@property(nonatomic,assign)CGFloat z;
-(id)initWithX:(CGFloat)m andY:(CGFloat)n andZ:(CGFloat)t andRadius:(CGFloat)r;
@end
 //  Sphere.m
// 继承
//
// Created by ma c on 15/8/12.
// Copyright (c) 2015年. All rights reserved.
// 球体类 #import "Sphere.h"
#define PI 3.14
@implementation Sphere
@synthesize z;
-(id)initWithX:(CGFloat)m andY:(CGFloat)n andZ:(CGFloat)t andRadius:(CGFloat)r
{
if(self = [super init])
{
super.x = m;
super.y = n;
z = t;
super.radius = r;
}
return self;
}
-(void)draw
{
NSLog(@"draw a sphere!");
}
-(void) Area
{
super.area = *PI*super.radius*super.radius;
}
-(void) Volum
{
super.volum = /*PI*super.radius*super.radius*super.radius;
}
-(void)show
{
NSLog(@"x:%.1f,y:%.1f,z:%.1f",super.x,super.y,z);
NSLog(@"radius:%.1f,area:%.1f,volum:%.1f",super.radius,super.area,super.volum);
}
@end

//矩形类Rectangle  .h和.m文件

 //  Rectangle.h
// 继承
//
// Created by ma c on 15/8/11.
// Copyright (c) 2015年. All rights reserved.
// 矩形类 #import "MyPoint.h" @interface Rectangle : MyPoint @property(nonatomic,assign) CGFloat len;
@property(nonatomic,assign) CGFloat hei;
-(id)initWith:(CGFloat)m andY:(CGFloat)n andLen:(CGFloat) l andHei:(CGFloat)h;
@end
 //  Rectangle.m
// 继承
//
// Created by ma c on 15/8/11.
// Copyright (c) 2015年. All rights reserved.
// 矩形类 #import "Rectangle.h" @implementation Rectangle
-(id)initWith:(CGFloat)m andY:(CGFloat)n andLen:(CGFloat) l andHei:(CGFloat)h
{
self = [super init];
if(self)
{
self.x = m;
self.y = n;
_len = l;
_hei = h;
}
return self;
}
-(void) Area
{
super.area = _len*_hei;
}
-(void) Length
{
super.length = *(_len+_hei);
}
-(void)draw
{
NSLog(@"drawing a Rectangle!");
}
-(void)show
{
[super show];
NSLog(@"len:%.1f,hei:%.1f,area:%.1f,length:%.1f",_len,_hei,super.area,super.length);
}
@end

//正方形类Square .h和.m文件

 //  Square.h
// 继承
//
// Created by ma c on 15/8/11.
// Copyright (c) 2015年. All rights reserved.
// 正方形类 #import "Rectangle.h" @interface Square : Rectangle
@end
 //  Square.m
// 继承
//
// Created by ma c on 15/8/11.
// Copyright (c) 2015年. All rights reserved.
// 正方形类 #import "Square.h" @implementation Square
-(void) Area
{
self.area = super.len*super.hei;
}
-(void) Length
{
self.length = *self.len;
}
-(void)draw
{
NSLog(@"drawing a Square!");
}
-(void)show
{
[super show];
}
@end

//主函数测试

 //  main.m
// 继承
//
// Created by ma c on 15/8/11.
// Copyright (c) 2015年. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Shape.h"
#import "Square.h"
#import "MyPoint.h"
#import "Rectangle.h"
#import "Circle.h"
#import "Sphere.h"
int main(int argc, const char * argv[])
{
@autoreleasepool
{
Shape *shape = [[Shape alloc]init];
[shape draw];
printf("\n"); MyPoint *mypoint = [[MyPoint alloc]initWithX:0.0 andY:0.0];
[mypoint draw];
[mypoint show];
printf("\n"); Circle *circle = [[Circle alloc]initWithX:1.1 andY:1.1
andRadius:5.0];
[circle Area];
[circle Length];
[circle draw];
[circle show];
printf("\n"); Rectangle *rectangle = [[Rectangle alloc]initWith:2.2 andY:2.2 andLen: andHei:];
[rectangle Area];
[rectangle Length];
[rectangle draw];
[rectangle show];
printf("\n"); Square *square = [[Square alloc]initWith:3.3 andY:3.3 andLen: andHei:];
[square Area];
[square Length];
[square draw];
[square show];
printf("\n"); Sphere *sphere = [[Sphere alloc]initWithX:4.4 andY:4.4 andZ:4.4 andRadius:6.0];
[sphere Area];
[sphere Volum];
[sphere draw];
[sphere show];
printf("\n");
}
return ;
}

//运行结果

-- ::15.931 继承[:] drawing a Shape!

-- ::15.933 继承[:] drawing a point!
-- ::15.933 继承[:] x:0.0,y:0.0 -- ::15.933 继承[:] drawing a circle!
-- ::15.933 继承[:] x:1.1,y:1.1
-- ::15.933 继承[:] radius:5.0,area:78.5,Length:31.4 -- ::15.934 继承[:] drawing a Rectangle!
-- ::15.934 继承[:] x:2.2,y:2.2
-- ::15.934 继承[:] len:3.0,hei:8.0,area:24.0,length:22.0 -- ::15.934 继承[:] drawing a Square!
-- ::15.934 继承[:] x:3.3,y:3.3
-- ::15.934 继承[:] len:4.0,hei:4.0,area:16.0,length:16.0 -- ::15.935 继承[:] draw a sphere!
-- ::15.935 继承[:] x:4.4,y:4.4,z:4.4
-- ::15.935 继承[:] radius:6.0,area:452.2,volum:678.2 Program ended with exit code:

注释:继承Shape的形状基本都具有自己的坐标及其对应的属性(如半径、长、高、宽、面积、周长、体积等)。当然,视情况去定义。

      

Objective-C:继承的体现的更多相关文章

  1. java7-3 继承

    1.继承概述: 把多个类中相同的内容给提取出来定义到一个类中. 如何实现继承呢? Java提供了关键字:extends 格式: class 子类名 extends 父类名 {} 父类也称为基类.超类: ...

  2. c#基础学习汇总----------继承

    封装,继承,多态.这是面向对象的思想,也可以说是最基本的东西.说到继承,直接的说他就是面向对象中类与类之间的一种关系.通过继承,使得子类具有父类公有的受保护访问权限的属性和方法,同时子类可以通过加入新 ...

  3. Android(java)学习笔记118:类继承的注意事项

    /* 继承的注意事项: A:子类只能继承父类所有非私有的成员(成员方法和成员变量) B:子类不能继承父类的构造方法,但是可以通过super(马上讲)关键字去访问父类构造方法. C:不要为了部分功能而去 ...

  4. .NET面向对象特性之“继承”

    整体简介 1.理解继承——继承关系图 2.实现继承与接口多继承 3.new. virtual.override方法 4.抽象方法和抽象类的继承 5.继承的本质 6.继承的复用性.扩展性和安全性 7.多 ...

  5. 《java入门第一季》之面向对象(继承)

    /* 继承的注意事项: A:子类只能继承父类所有(非私有)的成员(成员方法和成员变量),私有的变量和方法没法继承 B:子类(不能)继承父类的(构造方法),但是可以通过super关键字去访问父类构造方法 ...

  6. 【Java基础】【08面向对象_继承&方法&final】

    08.01_面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述 在Java中,使用{}括起来的代码被称为代码块. B:代码块分类 根据其位置和声明的不同,可以 ...

  7. 08-03 java 继承

    继承格式,优缺点,概述: /* 继承概述: 把多个类中相同的内容给提取出来定义到一个类中. 如何实现继承呢? Java提供了关键字:extends 格式: class 子类名 extends 父类名 ...

  8. Java面向对象理解_代码块_继承_多态_抽象_接口

    面线对象: /* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生 ...

  9. 又一次认识java(四) — 组合、聚合与继承的爱恨情仇

    有人学了继承,认为他是面向对象特点之中的一个,就在全部能用到继承的地方使用继承,而不考虑到底该不该使用,无疑.这是错误的.那么.到底该怎样使用继承呢? java中类与类之间的关系 大部分的刚開始学习的 ...

随机推荐

  1. Ionic入门三:列表

    列表是一个应用广泛的界面元素,在所有移动app中几乎都会使用到. 列表可以是基本文字.按钮,开关,图标和缩略图等. 列表项可以是任何的HTML元素.容器元素需要list类,每个列表项需要使用item类 ...

  2. CentOS查看内核版本、系统版本、系统位数

    http://blog.51cto.com/ultrasql/1640435

  3. iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面

    iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面 在1.2.2小节中提到过编辑界面(Interface builder),编辑界面是用来设计用户界面的,单击打开Main. ...

  4. 你了解border-radius吗?

    1.圆角正方形 .rounded-square{ width: 200px; height: 200px; background-color: pink; border-radius: 50px; } ...

  5. 1002 A+B for Polynomials (25)(25 point(s))

    problem 1002 A+B for Polynomials (25)(25 point(s)) This time, you are supposed to find A+B where A a ...

  6. C语言初始化

    注意:为什么要进行C语言环境的初始化?在没有进行C语言环境的初始化之前的初始化工作都是用汇编进行初始化的.比如核心初始化,和内存初始化 栈:栈帧:一个进程中一般会有多个函数,每一个函数都需要在内存中开 ...

  7. 【WIN10】判斷程序運行在哪個平台

    其中的一個方法是: string x = AnalyticsInfo.VersionInfo.DeviceFamily; 判斷 x  的值,有”Windows.Mobile“,”Windows.Des ...

  8. Alpha7

    难受

  9. Go Web编程 第四章--处理请求

    请求和响应 Request结构 URL字段 Header字段 Body字段 Form, PostForm, MultipartForm字段 在处理器函数中,我们可以通过Request获取各个字段的详细 ...

  10. 【转载】实现UTF8与GB2312编码格式相互转换(VC)已经验证!

    UTF-8编码:[1,1,1,0,A5,A6,A7,A8],[1,0,B3,B4,B5,B6,B7,B8],[1,0,C3,C4,C5,C6,C7,C8];对应的UNICODE编码:[A5,A6,A7 ...