面向对象ooDay6

打印 上一主题 下一主题

主题 928|帖子 928|积分 2784

精华笔记:

  • static final常量:应用率高

    • 必须声明同时初始化
    • 由类名打点来访问,不能被改变
    • 建议:常量所有字母都大写,多个单词用_分隔
    • 编译器在编译时会将常量直接替换为具体的数,效率高
    • 何时用:数据永远不变,并且经常使用

  • 抽象方法:

    • 由abstract修饰
    • 只有方法的定义,没有具体的实现(连{}都没有)

  • 抽象类:

    • 由abstract修饰
    • 包含抽象方法的类必须是抽象类
    • 抽象类不能被实例化(new对象)
    • 抽象类是需要被继承的,派生类:

      • 重写抽象方法---------------变不完整为完整
      • 也声明为抽象类------------一般不这么用

    • 抽象类的意义:

      • 封装共有的属性和行为-------------------代码复用
      • 为所有派生类提供统一的类型----------向上造型(代码复用)
      • 可以包含抽象方法,为所有派生类提供统一的入口(向上造型后能点出来),同时可以达到强制必须重写的目的(相当于制定了一个标准)


补充:


  • 设计规则:

    • 将派生类所共有的属性和行为,抽到超类中-------------抽共性
    • 若派生类的行为(实现代码)都一样,设计为普通方法
      若派生类的行为(实现代码)都不一样,设计为抽象方法
    • 。。。。下周二讲

  • 抽象方法/抽象类的疑问:

    • 抽象方法存在的意义是什么?

      • 保证当发生向上造型时,通过超类的引用能点出来那个方法-------保证能点出方法来

    • 既然抽象方法的意义是保证能点出来,那为什么不设计为普通方法呢?

      • 设计为普通方法,意味着派生类可以重写也可以不重写,但设计为抽象方法,则可以强制派生类必须重写--------达到强制派生类重写,统一的目的


  • 画对象带数:先找main

    • 当创建(new)World对象时,就会分配World类中的成员变量(ship,submarines,mines,bombs)
    • frame.setVisible(true);时会自动调用paint()方法,在paint()中:当第1次用到Images类时,会将Images.class加载到方法区中,同时将那一堆静态图片分配到方法区中,同时自动执行静态块给图片赋值
    • ship.paintImage(g);时会去调用paintImage()方法,方法中的this指的就是ship战舰,方法中在判断战舰是否是活着的,若活着则获取战舰的图片,用画笔给画到战舰的x和y坐标上
      submarines.paintImage(g);时会去调用paintImage()方法,假设submarines为侦察潜艇对象,则方法中的this指的就是侦察潜艇,方法中在判断侦察潜艇是否是活着的,若活着则获取侦察潜艇的图片,用画笔画到侦察潜艇的x和y坐标上 。假设submarines为侦察潜艇对象......


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

麻花痒

金牌会员
这个人很懒什么都没写!

标签云

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