精华笔记:
- 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[i].paintImage(g);时会去调用paintImage()方法,假设submarines[i]为侦察潜艇对象,则方法中的this指的就是侦察潜艇,方法中在判断侦察潜艇是否是活着的,若活着则获取侦察潜艇的图片,用画笔画到侦察潜艇的x和y坐标上 。假设submarines[i]为侦察潜艇对象......
-
来源:https://www.cnblogs.com/Bafanqwq/p/16565413.html
本站部分图文来源于网络,如有侵权请联系删除。