设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

XP脚本当中继承关系,Super()运行的流程。

查看数: 2268 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-3-9 15:18

正文摘要:

本帖最后由 miantouchi 于 2019-3-9 17:39 编辑 我的依据: 第一:super 将调用被当前方法覆盖的父类中的同名方法 第二:继承关系,Window_Command < Window_Selectable < Window_Base < Window 第三:self当前方 ...

回复

灯笼菜刀王 发表于 2019-3-9 17:36:34
本帖最后由 灯笼菜刀王 于 2019-3-9 18:17 编辑

继承关系, 用个栗子来说

比如, 星矢有个儿子,叫星活,

class 星活 < 星矢              (实际上不能用汉字作为类名哦, 这里只是示范, 别误导了)

星矢会天马流星拳, 一夜18次...阿呸, 一秒18次
class 星矢
   attr_accessor  :天马流星拳
   def initialize
      @天马流星拳 = 18
   end
end

星活用super 继承了老爸的方法, 也会天马流星拳了             (实际上实变量不需要super,一样继承的, 这里为了让你明白就多此一举, 一般来说super是用于继承父类的方法同时还要增加新的函数的时候用)
class 星活 < 星矢
    def  initialize
       super
    end
end

这个时候, p 星活.天马流星拳 #=> 18   , 他完整的继承了老爸的方法  
后来, 星活改进技术, 他的天马流星拳有28拳

class 星活 < 星矢
    def  initialize
       self.天马流星拳 = 28
    end
end

这个时候, p 星活.天马流星拳  #=> 28,  而 p 星矢.天马流星拳 #=> 18

子类可以给父类继承来的实变量重新赋值, 这个赋值只针对引用这个实例的对象,  而不影响其他人

p 星蹦.天马流星拳   #=> 18
p 星乱.天马流星拳   #=> 18
p 星跳.天马流星拳   #=> 18

点评

菜刀格言: 无法理解的话就硬记, 用多了自然理解它的规则了,笑  发表于 2019-3-9 18:14
答题意思明白了,对象继承这东西真是难以理解透彻  发表于 2019-3-9 18:06

评分

参与人数 1星屑 +100 收起 理由
RyanBern + 100 认可答案

查看全部评分

灯笼菜刀王 发表于 2019-3-9 16:28:41
本帖最后由 灯笼菜刀王 于 2019-3-9 16:37 编辑

1,  F1, 搜索 Window, 你会发现 ,它还有父类, initialize就在那里,

而Window_Base 的initialize, 把从它子类的super里得到的参数, 用来赋值给Window的x, y , width, height, 从而得到实际的坐标和宽高

  def initialize(x, y, width, height)
    super()
    @windowskin_name = $game_system.windowskin_name
    self.windowskin = RPG::Cache.windowskin(@windowskin_name)
    self.x = x
    self.y = y
    self.width = width
    self.height = height

    self.z = 100
  end

2,  你第二步,  super(0, 0, 160, 6 * 32 + 32) , 这不是 x, y , width, height 都齐了么?

点评

self.是指自己, 也就是调用这个实例的对象本身  发表于 2019-3-9 17:41
我重新编辑了下,self.是指的父类参数啊  发表于 2019-3-9 17:03
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-4-23 01:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表