麻花痒 发表于 2022-9-16 17:15:35

面向对象ooDay6

精华笔记:

[*]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为侦察潜艇对象......


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 面向对象ooDay6