14-super

/*
 僵尸

 跳跃僵尸、舞王僵尸、铁桶僵尸
 */
#import <Foundation/Foundation.h>

/*
 super的作用
 1.直接调用父类中的某个方法
 2.super处在对象方法中,那么就会调用父类的对象方法
   super处在类方法中,那么就会调用父类的类方法

 3.使用场合:子类重写父类的方法时想保留父类的一些行为

 QITA :

1,子类拥有父类所有的东西,因此可以在子类里面直接使用父类声明的实体变量或方法而无需再次声明。
2,子类如果重写了父类里面的方法则子类的对象在调用时会调用子类里的,而不再是父类里的方法。
3,父类的对象不能调用子类的方法。
4,父类的指针可以指向子类的对象,这个指针调用方法时将调用子类的方法(如果重写了的话)而不是父类里的方法,而子类的指针却不可以

指向父类的对象。

 问题:
 *子类类方法可以直接调用父类类方法
 *子类对象方法可以直接调用父类对象方法
 ***那,子类对象能否调用父类类方法?
 -> [子对象 父类方法] or 如果重新了子类方法,还想调用父类方法,那就[super 父类方法]
 */

// 僵尸
@interface Zoombie : NSObject
- (void)walk;

+ (void)test;
- (void)test;

@end

@implementation Zoombie
- (void)walk
{
    NSLog(@"往前挪两步******");
}

+ (void)test
{
    NSLog(@"Zoombie+test");
}

- (void)test
{
    NSLog(@"Zoombie-test");
}
@end

// 跳跃僵尸
@interface JumpZoombie : Zoombie
+ (void)haha;
- (void)haha2;
@end
/*********************************************/

@implementation JumpZoombie

+ (void)haha  ////////////////////////////////////////////////
{
    [super test];
}

- (void)haha2  ///////////////////////////////////////////////
{
    [super test];
}

- (void)walk //////////////////////////////////////////////////
{
    // 跳两下
    NSLog(@"跳两下");

    // 走两下(直接调用父类的walk方法)
    [super walk];  ///////////////////////////////////////////
    //NSLog(@"往前挪两步----");

}
@end
/********************************************/
int main()
{
    //[JumpZoombie haha];
    JumpZoombie *jz = [JumpZoombie new];

    [jz haha2];

    return 0;
}

  

时间: 2024-10-13 23:51:05

14-super的相关文章

【Java面试题】14 super.getClass()方法调用

下面程序的输出结果是多少? import java.util.Date; public class Test extends Date{ public static void main(String[] args) { new Test().test(); } public void test(){ System.out.println(super.getClass().getName()); } } 在test方法中,直接调用getClass().getName()方法,返回的是Test类名.

【Python】使用super初始化超类

初始化超类的传统方式,在子类的实例中调用超类的__init__()方法. 但是传统的方法有两个问题,比如: 问题1: 1 class MyBaseClass: 2 def __init__(self, value): 3 self.value = value 4 5 6 class TimesTwo: 7 def __init__(self): 8 self.value *= 2 9 10 11 class PlusFive: 12 def __init__(self): 13 self.val

JAVA基础--super关键字

super一般出现子类的构造方法中.super语句必须写在第一行,super一般用来调用父类的构造方法.是为了给父类的属性初始化,以便子类使用这些属性. 子类继承后,如果没有定义自己的属性或者重写自己的方法,那么当创建对象之后,对象调用的就是父类中的属性和方法. 如果拥有则使用自己的属性和方法. 在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候(调用构造器的时候)这个子类对象里面又会创建一个父类对象super.

Java中super的几种用法并与this的区别

1.     子类的构造函数如果要引用super的话,必须把super放在函数的首位. 1 class Base { 2 Base() { 3 System.out.println("Base"); 4 } 5 } 6 7 public class Checket extends Base { 8 Checket() { 9 super();//调用父类的构造方法,一定要放在方法的首个语句 10 System.out.println("Checket"); 11 }

【设计模式】14、命令模式

1 package com.shejimoshi.behavioral.Command; 2 3 4 /** 5 * 功能:接收命令着者,这个人可以执行多种命令 6 * 时间:2016年3月2日上午11:07:30 7 * 作者:cutter_point 8 */ 9 public class Recipient 10 { 11 public void findPhoneNum() 12 { 13 System.out.println("查找手机号码"); 14 } 15 16 pub

UIScrollView控件介绍

一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕?大?小是极其有限的,因此直接展?示在?用户眼前的内容也相当有限 (2)当展?示的内容较多,超出?一个屏幕时,?用户可通过滚动?手势来查看屏幕以外的内容 (3)普通的UIView不具备滚动功能,不能显?示过多的内容 (4)UIScrollView是一个能够滚动的视图控件,可以?用来展?示?大量的内容,并且可以通过滚 动查看所有的内容 (5)  举例:手机上的“设置”.其他?示例程序 2.UIScrollView的简

iOS开发——MVC详解&amp;Swift+OC

MVC 设计模式 这两天认真研究了一下MVC设计模式,在iOS开发中这个算是重点中的重点了,如果对MVC模式不理解或者说不会用,那么你iOS肯定学不好,或者写不出好的东西,当然本人目前也在学习中,不过既然能看到这篇文档,说明你已经开始着手学习并且想深入研究它了,个人也是研究很久才搞懂,就写下来希望对各位有用,也能方便自己以后开发中查看,好了废话不多说,下面就来详细介绍一下MVC,并且用实例验证一下在项目开发中怎么去使用它. 相信你对 MVC 设计模式 并不陌生,只是不能完全理解其中的含义或者不能

Elasticsearch5.0 Java Api(一) -- 插入索引

Elasticsearch5.X官方手册 Elasticsearch5.X官方手册中文版 Elasticsearch5.X Java Api官方手册 导入maven依赖 <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> <version>5.0.0</version> </depend

播放音乐案例

播放音乐案例 分析: 和上一篇文章的结构是一样的,只不过我们需要在这里里面加上播放音乐的一些操作: 其实也就是调用系统的播放音乐的API而已,写在服务里面就好, //媒体播放器 private MediaPlayer player; 1 public void onCreate() { 2 File file=new File(Environment.getExternalStorageDirectory(),"a.mp3"); 3 player =new MediaPlayer();

Spring完全基于Java和注解配置

要点: 配置继承WebApplicationInitializer的类作为启动类,相当于配置web.xml文件 使用@Configuration注解一个类,在类中的方式使用@Bean注解,则表名该方法的返回值为一个Bean,相应于配置applicationContext.xml等spring的xml配置文件 配置启动类 继承WebApplicationInitializer并重新onStartup方法,加载配置类,相当于配置web.xml文件 1 public class WebAppInitC