Person 排序 方法重写

main.m

//
//  Person.m
//  sort
//
//  Created by syrcfwzx on 16/1/7.
//  Copyright (c) 2016年 syrcfwzx. All rights reserved.
//

#import "Person.h"

@implementation Person
-(instancetype)initWithClasses:(NSString*)c andName:(NSString*)n andAge:(int)a
{
    self=[super init];
    if(self)
    {
       self.classes=c;
       self.name=n;
       self.age=a;
    }
    return self;

}
-(NSString*)description
{
    return [NSString stringWithFormat:@"class=%@ name=%@ age=%d",self.classes,self.name,self.age];
}

-(NSComparisonResult)compareWithClassesAndName:(Person*)p
{
    NSComparisonResult result =[self.classes compare:p.classes];
    if(result ==NSOrderedSame)
    {
        return [self.name compare:p.name];
    }
    else
    {
    return result;
    }
}
-(NSComparisonResult)compareWithAge:(Person*)p
{
    if(self.age ==p.age)
    {
        return NSOrderedSame;
    }
    else if (self.age >p.age)
    {
        return NSOrderedDescending;
    }
    else
    {
        return NSOrderedAscending;
    }
}

@end

.h

//
//  Person.h
//  sort
//
//  Created by syrcfwzx on 16/1/7.
//  Copyright (c) 2016年 syrcfwzx. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject
@property NSString* classes;
@property NSString* name;
@property int age;

-(instancetype)initWithClasses:(NSString*)c andName:(NSString*)n andAge:(int)a;
-(NSComparisonResult)compareWithClassesAndName:(Person*)p;
-(NSComparisonResult)compareWithAge:(Person*)p;

@end

.m

//
//  Person.m
//  sort
//
//  Created by syrcfwzx on 16/1/7.
//  Copyright (c) 2016年 syrcfwzx. All rights reserved.
//

#import "Person.h"

@implementation Person
-(instancetype)initWithClasses:(NSString*)c andName:(NSString*)n andAge:(int)a
{
    self=[super init];
    if(self)
    {
       self.classes=c;
       self.name=n;
       self.age=a;
    }
    return self;

}
-(NSString*)description
{
    return [NSString stringWithFormat:@"class=%@ name=%@ age=%d",self.classes,self.name,self.age];
}

-(NSComparisonResult)compareWithClassesAndName:(Person*)p
{
    NSComparisonResult result =[self.classes compare:p.classes];
    if(result ==NSOrderedSame)
    {
        return [self.name compare:p.name];
    }
    else
    {
    return result;
    }
}
-(NSComparisonResult)compareWithAge:(Person*)p
{
    if(self.age ==p.age)
    {
        return NSOrderedSame;
    }
    else if (self.age >p.age)
    {
        return NSOrderedDescending;
    }
    else
    {
        return NSOrderedAscending;
    }
}

@end
时间: 2024-12-28 09:40:27

Person 排序 方法重写的相关文章

Collections -集合排序compareTo方法重写,shuffle,addall

package cn.learn.collection.Collections; /* 排序的对象的类,实现comparable借口,重写compareto方法 若要打印必须重写toString方法,会默认调用 */ public class Person implements Comparable<Person>{ private String name; private int age; @Override public String toString() { return "P

【学习ios之路:Objective-C】OC中常用的系统排序方法

①.OC中常用排序方法: 1).不可变数组 - (NSArray *)sortedArrayUsingSelector:(SEL)comparator; - (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr; 2)可变数组 - (void)sortUsingSelector:(SEL)comparator; - (void)sortUsingComparator:(NSComparator)cmptr; 3).字典排序 - (NS

Java中的方法重写 与 final关键字

Java中的方法重写 与 final关键字 以下程序是否存在错误? class Base { private final void method() { System.out.println("In Base..."); } } class Sub extends Base { public void method() { System.out.println("In Sub..."); } } 答案 正确的. 使用final关键字可以声明类.成员变量和成员方法,一

方法重写和方法重载

重写和重载虽然都有一个共同点是发生在方法之间,但是两者之间没有任何的关系! 方法重载:是指一个类中有多个方法,这些方法的名字一样,但是形参不一样 方法重写:发生在子类和父类之间,当子类继承了父类之后,子类就拥有了父类中定义的方法,当然除了构造器没有继承,子类可以去调用父类的方法,也可以重写,在子类中重写父类的方法,保证方法名一样,形参也要一样吧,这样子类再访问这个方法时就会默认使用这个在子类中被重写的方法,而不是父类中那个被覆盖的方法. 当然,我们如果想在子类中使用父类中被覆盖的方法,我们可以使

方法重写

什么是方法重写呢? 刚刚其实已经说到了,当父类与子类之间需要将相同的行为拥有不同的实现时,就需要使用重写. 重写的好处--为什么Java中有方法重写呢? 可以按照自己的意愿去更改父类的方法实现. 一般情况下我们会以继承与重写一起说它们的好处 好处:继承可以使一个类中的代码得到重用,而重写在继承的基础上又可以使子类对父类已有的方法进行重新的实现. 重写有一些注意事项: ①在重写父类的行为时,需要使子类的方法的返回类型.方法名.形式参数列表与父类一致,若仅仅只是方法名相同,参数列表不同则变成了方法的

Java实现几种常见排序方法

转自:http://www.cnblogs.com/sevenyuan/archive/2009/12/04/1616897.html 日常操作中常见的排序方法有:冒泡排序.快速排序.选择排序.插入排序.希尔排序,甚至还有基数排序.鸡尾酒排序.桶排序.鸽巢排序.归并排序等. 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经

面向对象的方法重写数组功能

用面向对象的方法把可以对数组实现的功能写在对应的方法里,以待什么时候需要就调用此方法来实现对应的功能. 方法类:ArrayUtil 1 package com.sanguosha.exer; 2 //一个数组的工具类 3 public class ArrayUtil {//设置好需要调用的方法 4 //设置求数组的最大值的方法 5 public int getMax(int[] arr){//传进来一个数组参数,针对这个数组 6 int max=arr[0]; 7 for(int i=0;i<a

c# 中面相对性的三个特点:封装,继承,多态, 以及c#中隐藏(new)和方法重写(override)和重载(overload)的区别

封装 1)封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问,通常有两种访问方式:set 设置,get 获取. 2)封装结果:存在但是不可见. 3) 访问修饰符 声明的可访问性                                 含义 public                                    访问不受限制. protected                              访问仅限于本类或者其子类(可以跨程序集). p

方法重写与方法重载

继承和多态都是面向对象程序设计的特点.使用继承可以在一个父类的基础上再创建一个子类,这个子类不但拥有父类已有的属性和方法,还可以创建属于自己的属性和方法.由于子类和父类之间的关系,从而引出了方法重写和方法重载的问题.方法重写及方法重载在继承和多态性方面的应用中会存在很多问题,这些概念很容易混淆,掌握重写和重载的区别对学会使用多态的方式编写程序.提高程序的可维护性奠定了基础. 一.方法重写(0veriding)如何定义重写:在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类