类的扩展

1,类目

1,系统已经写好的类目:按照功能对系统的类方法进行区分

类目从@interface开始,后面是当前类的名字,类名后是分类的功能,@end结束

 2.我们创建的类目,一般是为了把一些系统的类进行功能扩充.

NSString *str=@"2015-07-19 14:26:00";

[str sayhi];//为系统重新写的方法

 NSString *str1=@"2015-07-19 20:00:00";

 NSString *str2=@"2015-07-19 14:30:00";

BOOL isTrue=[str isequalTwoDate:@"2015-07-19 20:00:00"];

NSLog(@"%d",isTrue);

NSLog(@"%@",[str AppyingDate:str1]);

if([str2 isInTimeZone:str end:str1]){

NSLog(@"在这个时间内");

}else{NSLog(@"不在这个时间内");}

NSDate *date=[str stringToDate];

NSLog(@"%@",date);   

NSDate *date1=[NSString stringToDate:str];

NSLog(@"%@",date1);


2.延展

就是保证了类的安全性,在.m文件中声明,实现,只能在.m文件中使用,来保证其安全性.

延展以@interface开头,然后写当前延展的类名,类名后加一个(),@end结束

一般延展会写在自己写的.m文件中,把一些不想让外部调用的属性放在延展里,这样这条属性只能在类的内部使用

外部用不了,尽最大的可能保护当前类的安全

类目一般都是给看不见.m的系统文件进行扩展,延展一般是针对自己的类进行操作



3.协议

1.声明一份协议

@protocol name <NSObject> //name表示协议的名字 

//协议的内容

//声明的方法

//@required是必须实现的方法,默认是必须实现的方法

//@optional是可选择执行的方法

2.设置代理人的属性

在@interface里面 

@property(nonatomic,assign)id<Marry>delegate;

//俩个人都写完协议之后,协议才正式的生效

声明一个方法

- (void)方法名;

3.让代理人去执行协议里的方法

去.m文件中用self.delegate找到代理人,去调用声明的方法

[self.delegate 方法名];

4,签协议

到代理人类中,引入头文件,然后签订协议

@interface 类名 :NSObject<Marry>

5,设置代理人

去main.c里去设置代理人,先创建两个类的对象

设置代理人:协议人对象.delegate=代理人对象;

[协议人对象 方法];

6.实现协议方法

去代理人类的.m文件中实现协议方法.










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java中,可以使用"extends"关键字来从抽象Shape扩展出一个圆形Circle。示例代码如下: ``` abstract class Shape { // 抽象方法 public abstract void draw(); } class Circle extends Shape { @Override public void draw() { // 实现圆形绘制代码 } } ``` 在上述代码中,Circle继承了Shape并重写了draw()方法,以实现绘制圆形的功能。 ### 回答2: Shape是所有形状的抽象,我们可以从它扩展出许多子,如矩形、三角形、椭圆等。在这个过程中,我们发现还缺少一个圆形,我们可以从Shape扩展出一个圆形Circle来弥补这个不足。 在Circle中,我们可以定义圆的半径作为属性,并利用Shape中定义的抽象方法来计算圆的面积和周长。具体而言,我们可以实现如下代码: ``` abstract class Shape { // 定义两个抽象方法 public abstract double area(); public abstract double perimeter(); } class Circle extends Shape { double radius; // 圆的半径 public Circle(double radius) { this.radius = radius; } // 实现Shape中的抽象方法 public double area() { return Math.PI * radius * radius; } public double perimeter() { return 2 * Math.PI * radius; } } ``` 在Circle中,我们首先定义了半径作为属性,并在构造方法中初始化。然后,我们实现了Shape中的两个抽象方法area()和perimeter(),分别用来计算圆的面积和周长。其中,圆的面积公式是πr²,周长公式是2πr,r是圆的半径。这里,我们直接利用Math中定义好的π常量和平方函数来进行计算。 除此之外,我们还可以添加一些其他的方法,比如判断两个圆是否相等、判断一个点是否在圆内等。总之,从Shape扩展出一个圆形Circle是非常简单和自然的,因为圆形作为一种常见的形状,它应该被纳入到我们的形状层次结构中,并且可以享受到Shape中定义好的各种抽象方法和属性的好处。 ### 回答3: 抽象是面向对象编程中非常重要的概念之一,它是一种特殊的,不能直接创建实例,而是需要继承后才能使用。在Java中,我们用关键字abstract来定义抽象,并且抽象中可以包含抽象方法和非抽象方法。 我们先来看一下抽象shape,它应该包含哪些属性和方法。 首先,shape是一个抽象,不能直接创建实例。其次,它应该包含至少一个抽象方法,用来描述不同形状之间的共性。例如,我们可以定义一个抽象方法来计算形状的面积,因为不同形状的面积计算方式是不同的。 接下来,我们需要扩展出一个圆形circle。圆形有什么特殊的属性或方法呢?首先,圆形应该拥有一个半径,用来计算面积和周长。其次,我们还可以定义一个圆心坐标,方便进行位置上的计算。最后,我们还可以重写shape的抽象方法来计算圆的面积和周长。 继承shape后,我们需要在circle中定义自己特有的属性和方法,例如计算周长和面积的公式,以及圆心坐标等。同时,我们还需要重写shape中的抽象方法,在circle中实现计算圆的面积和周长的方法。 总之,从抽象shape扩展出一个圆形circle,需要确定shape中的抽象方法和非抽象方法,同时在circle中定义自己特有的属性和方法,重写shape中的抽象方法,实现自己特有的计算方法。通过这种方式,我们可以实现代码的重用和扩展性,更好地满足软件开发中的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值