方法覆盖(重写)

方法重载:相同的方法名称 不同的参数个数或类型构成方法重载。       OC没有方法重载

//
//  Animal.h

#import <Foundation/Foundation.h>

@interface Animal : NSObject
-(void)run;
-(void)play;

@end

#import "Animal.h"

@implementation Animal
-(void)run{
    NSLog(@"run...");
}
-(void)play{
    NSLog(@"play...");

}
@end
//
//  Cat.h
#import <Foundation/Foundation.h>
#import "Animal.h"
@interface Cat : Animal

@end

#import "Cat.h"

@implementation Cat
-(void)run{
    NSLog(@"猫猫run...");
}
-(void)play{
    NSLog(@"猫猫play...");

}
@end
//
//  Dog.h

#import <Foundation/Foundation.h>
#import "Animal.h"
@interface Dog : Animal

@end
//
//  Dog.m

#import "Dog.h"

@implementation Dog
-(void)run{  [super run]; //这里可以调用父类的run方法
    NSLog(@"狗狗run...");//重写了父类方法
}
-(void)play{
    NSLog(@"????play...");

}
@end
//
//  main.m

#import <Foundation/Foundation.h>
#import "Cat.h"
#import "Dog.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Cat *cat = [[Cat alloc]init];
        [cat run];//首先从Cat类中寻找方法 找不到在从cat的超类中寻找 重写父类方法就可以写在cat方法里
        [cat play];
        Dog *dog = [[Dog alloc]init];
        [dog run];
        [dog play];
    }
    return 0;
}
时间: 2024-10-05 22:50:50

方法覆盖(重写)的相关文章

Java方法覆盖重写

方法覆盖重写注意事项: 1.必须保证方法名相同,返回值也相同    @Override:写在方法前面,用来检测方法的覆盖重写是否有效,这个注解不是必要的,就算不写,方法覆盖重写符合要求也是正确的 2.子类方法的返回值必须[小于等于]父类方法的返回值 3.子类方法的修饰符必须[大于等于]父类方法的修饰符 继承关系中,父子类构造方法的访问特点: 1.子类构造方法中默认隐含一个“super()”的调用,而且在子类构造方法中是第一行语句,所以先执行父类的构造方法再执行子类的构造方法(先有父才有子) 2.

OC 类的继承、方法的重写和重载

一.类的继承 Objective-c中类的继承与C++类似,不同的是Objective-c不支持多重继承,一个类只能有一个父类,单继承使Objective-c的继承关系很简单,易于管理程序.Objective-c中所有类的父类是NSObject. Objective-c中类的继承例子: @interface Person: NSObject { NSString* name; int age; } - (NSString*) name; - (int) age; - (void) setName

OC 类的继承 方法重载重写

一.类的继承 Objective-c中类的继承与C++类似,不同的是Objective-c不支持多重继承,一个类只能有一个父类,单继承使Objective-c的继承关系很简单,易于管理程序.Objective-c中所有类的父类是NSObject. Objective-c中类的继承例子: @interface Person: NSObject { NSString* name; int age; } - (NSString*) name; - (int) age; - (void) setName

方法覆盖(方法重写)

package com.qingfeng;/** *  * @author win7 * 功能:方法覆盖(方法重写):子类的某个方法覆盖父类的某个方法 */public class Demo3_8 { public static void main(String[] args) {        // TODO Auto-generated method stub        Animal animal1 = new Animal();        animal1.cry();      

C#基础-方法的重写(new)和覆盖(override)

最近又再看基础知识了. 看到方法的重写(new)和覆盖(override)的时候有点不太懂. 于是百度之. 那答案啊..... 要么就是把覆盖(override)和重载(overlord)混淆了. 要么就是把重写(new)和覆盖(override)说反了. 最后不得已谷歌之. 在stackoverflow里看到一个比较好的答案: ------------------------------------------------------------------------------------

Java类的设计----方法的重写、覆盖

方法的重写.覆盖 在子类中可以根据需要对从父类中继承来的方法进行改造-覆盖方法(方法的重置.重写),在程序执行时,子类的方法将覆盖父类的方法. 覆盖方法必须和被覆盖方法具有相同的方法名称.参数列表和返回值类型. 覆盖方法不能使用比被覆盖方法更严格的访问权限. 覆盖方法举例(1) public class Person { public String name; public int age; public String getInfo() { return "Name: "+ name

Java——方法的重写(覆盖)

2.2方法的重写(覆盖)(override,orverwrite) 2.2.1 什么时候方法要进行重写? 如果父类中的方法已经无法满足当前子类的业务需求,需要将父类中的方法进行重新写一遍.就是要改变父类的行为. 注意:子类如果重写父类中的方法之后,子类对象一定调用的是重写之后的方法. 2.2.2 发生方法覆盖的条件 ①发生在具有继承关系的两个类之间 ②必须具有相同的方法名,相同的返回值类型,相同的参数列表. ③重写的方法不能比被重写的方法拥有更低的访问权限. ④重写的方法不能比被重写的方法抛出更

java多态的2种表现形式 方法重载和方法覆盖

方法重载:同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载. 方法覆盖:子类重新实现了父类中的方法. 1.方法的重载实例(Overload) 指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法, 然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行 /** * 方法重载满足的条件 * 1.同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载 * 2.参数列表不同指参数的类型,参数的个数,参数的顺序至少一项不同 * 3.方法的返回值类型

《Java中方法的重写》

1 //方法的重写 2 /* 3 注意:方法的重写要遵循“两同两小一大”规则 4 “两同”即方法名相同.形参列表相同: 5 “两小”(1)指的是子类方法返回值类型比父类方法的返回值类型更小或相等,[什么意思?] 6 (2)子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等. 7 “一大”指的是子类方法的访问权限应比父类方法的访问权限更大或者相等. 8 9 特别注意:覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法. 10 例如下面代码会引起错误: