面向对象第三天:

潜艇游戏第一天:

  1. 设计6个类,设计World类并测试

潜艇游戏第二天:

  1. 给6个类添加构造方法,并测试

潜艇游戏第三天:

  1. 设计侦察潜艇数组、鱼雷潜艇数组、水雷潜艇数组、水雷数组、炸弹数组,并测试

  2. 设计SeaObject超类,6个类继承SeaObject

  3. 给SeaObject设计两个构造方法,6个派生类分别调用

  4. 将侦察潜艇数组、鱼雷潜艇数组、水雷潜艇数组统一组合为SeaObject数组,并测试

回顾:

  1. 构造方法:构造函数、构造器、构建器--------复用给成员变量赋值

    • 作用:给成员变量赋初值

    • 与类同名,没有返回值类型(连void)

    • 创建对象时被自动调用

    • 若自己不写构造,默认一个无参构造,若自己写了构造,则不再默认提供

    • 可以重载

  2. this:指代当前对象,哪个对象调用方法它指的就是哪个对象

    this的用法:

    this.成员变量名-------------------------访问成员变量

    当成员变量与局部变量同名时,若想访问成员变量则this不能省略

  3. null:表示空,没有指向任何对象

    若引用的值为null,则该引用不能进行任何操作了,若操作则发生 NullPointerException空指针异常

  4. 引用类型数组:

    Bomb[] bs = new Bomb[3];
    bs[0] = new Bomb(100,200); //1)new
    bs[1] = new Bomb(200,300);
    bs[2] = new Bomb(300,400);
    System.out.println(bs[0].width); //2)访问属性需打点

笔记:

  1. 引用类型数组:

    1)Bomb[] bs = new Bomb[3];bs[0] = new Bomb(100,200);bs[1] = new Bomb(200,300);bs[2] = new Bomb(300,400);System.out.println(bs[0].width); //输出第1个炸弹的宽bs[1].x = 250; //修改第2个炸弹的x为250bs[2].move(); //第3个炸弹移动for(int i=0;i<bs.length;i++){ //遍历所有子弹System.out.println(bs[i].height); //输出每个子弹的高bs[i].move(); //每个子弹移动}
    2)Bomb[] bs = new Bomb[]{ //了解new Bomb(100,200),new Bomb(200,300),new Bomb(300,400)};
  2. 继承:

    • 作用:代码复用

    • 通过extends来实现继承

    • 超类/父类:共有的属性和行为

      派生类/子类:特有的属性和行为

    • 派生类既能访问自己的,也能访问超类的,但超类不能访问派生类的

    • 一个超类可以有多个派生类

      一个派生类只能有一个超类-----------单一继承

    • 具有传递性

    • java规定:构造派生类之前必须先构造超类

      • 派生类的构造方法中若没有调用超类的构造方法,则默认super()调用超类的无参构造方法

      • 派生类的构造方法中若自己调用了超类的构造方法,则不再默认提供

      super()调用超类构造方法,必须位于派生类构造方法的第一行

      //super的演示
      public class SuperDemo {public static void main(String[] args) {Boo o = new Boo();}
      }
      class Coo{Coo(int a){}
      }
      class Doo extends Coo{Doo(){super(5); //调用超类的有参构造}/*//如下代码为默认的:Doo(){super();}*/
      }
      ​
      class Aoo{Aoo(){System.out.println("超类构造");}
      }
      class Boo extends Aoo{Boo(){//super(); //默认的,调用超类的无参构造System.out.println("派生类构造");}
      }
  3. super:指代当前对象的超类对象

    super的用法:

    • super.成员变量名----------------------访问超类的成员变量(了解)

    • super.方法名()---------------------------调用超类的方法----------明天讲

    • super()-------------------------------------调用超类的构造方法

  4. 向上造型:---------------------代码复用

    • 超类型的引用指向了派生类的对象

    • 能点出来什么,看引用的类型-----------这是规定,记住就OK了

    package ooday03;
    //向上造型的演示
    public class UploadDemo {public static void main(String[] args) {Eoo o1 = new Eoo();o1.a = 1;o1.show();//o1.b = 2;  //编译错误//o1.test(); //编译错误,超类不能访问派生类的
    ​Foo o2 = new Foo();o2.b = 1;o2.test();o2.a = 2;  //正确o2.show(); //正确,派生类可以访问超类的
    ​Eoo o3 = new Foo(); //向上造型o3.a = 1;o3.show();//o3.b = 2;  //编译错误//o3.test(); //编译错误,能点出来什么,看引用的类型}
    }
    ​
    class Eoo{int a;void show(){}
    }
    class Foo extends Eoo{int b;void test(){}
    }

精华笔记:

  1. 引用类型数组:

  2. 继承:

    • 作用:代码复用

    • 通过extends来实现继承

    • 超类/父类:共有的属性和行为

      派生类/子类:特有的属性和行为

    • 派生类既能访问自己的,也能访问超类的,但超类不能访问派生类的

    • 一个超类可以有多个派生类

      一个派生类只能有一个超类-----------单一继承

    • 具有传递性

    • java规定:构造派生类之前必须先构造超类

      • 派生类的构造方法中若没有调用超类的构造方法,则默认super()调用超类的无参构造方法

      • 派生类的构造方法中若自己调用了超类的构造方法,则不再默认提供

      super()调用超类构造方法,必须位于派生类构造方法的第一行

  3. super:指代当前对象的超类对象

    super的用法:

    • super.成员变量名----------------------访问超类的成员变量(了解)

    • super.方法名()---------------------------调用超类的方法----------明天讲

    • super()-------------------------------------调用超类的构造方法

  4. 向上造型:---------------------代码复用

    • 超类型的引用指向了派生类的对象

    • 能点出来什么,看引用的类型-----------这是规定,记住就OK了

补充:

  1. 继承意味着代码虽然我没有写,但也属于我,只是没有写在一起而已

  2. 泛化:将共有的抽出来的过程,泛化是设计层面的概念,从代码实现层面来说咱们就是继承,泛化就是继承

  3. 继承要符合is a(是一个)的关系

王 第潜艇三天 引用类型 继承相关推荐

  1. javascript面向对象系列第三篇——实现继承的3种形式

    前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.开宗明义,继承是指在原有对象的基础上,略作修改,得到一个新的对象.javascript主要包括类式继承.原型继承和拷贝继承这三种 ...

  2. 实验三 类的继承和多态性

    实验三 类的继承和多态性 1.(1)编写一个接口ShapePara,要求: 接口中的方法: int getArea():获得图形的面积.int getCircumference():获得图形的周长 ( ...

  3. 汇编语言(王爽第三版) 实验5

    汇编语言(王爽第三版) 实验5 由图可见: 第一问:cpu执行程序,程序返回前,ds一直未变,所以data段中的数据不变. 第二问:cpu执行程序,程序返回前,cs=1CD5,SS=1CD4,DS=1 ...

  4. 面向对象的三特性(继承、多态、封装 )Python

    继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ParentCla ...

  5. JavaSE(三)——数组及继承

    文章目录 1. 数组定义 1.1 一维数组 1.1.1 实例 1.1.2 冒泡排序 1.2 二维数组 1.3 数组和链表的区别 2. Arrays工具类 3. 继承 3.1 类的继承格式 3.2 继承 ...

  6. 汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序

    参考:http://blog.sina.com.cn/s/blog_171daf8e00102xclx.html 汇编语言实验答案 (王爽):https://wenku.baidu.com/view/ ...

  7. 汇编语言(王爽 第三版)检测点

    这本书购于2015.11.30,我大概从2016.3月开始读,历时大概三个月,我们学校开<微机原理与汇编语言>这门课,不过让人感觉很不爽,课本一开始就丢给你一堆东西,意欲让你记住这一大堆东 ...

  8. 20面向对象三特征 之继承 方法重写 super

    继承是:多个类有重复内容,把重复内容放到一个新类中,就可以通过extends关键词去让原来的类和新类产生继承关系,子类只能拿到父类一部分信息.通过extends关键词去指明类与类之间的关系,一个父类可 ...

  9. 汇编语言答案-王爽第三版

    汇编语言答案(王爽) 检测点1.1 (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13位. (2)1KB的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 . (3) ...

最新文章

  1. splunk rest api search
  2. 8.tomcat认证访问
  3. 只用最适合的! 全面对比主流 .NET 报表控件:水晶报表、FastReport、ActiveReports 和 Stimulsoft...
  4. XML file does not appear to have any style information associated with it. XHTML程序出现这个错误
  5. 二层网络和三层网络的区别
  6. typora用Pandoc导出html,Typora安装 Pandoc实现导出功能
  7. Python numpy学习笔记(一)
  8. 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·007【uni-app和vue.js基础快速上手】
  9. 关于接口测试的一些总结
  10. 什么是AJAX (转贴)
  11. 对分类型变量,进行编码处理——pd.get_dummies()、LabelEncoder()、oneHotEncoder()
  12. Canny边缘检测算法解析
  13. API功能测试如何实施(转载自测试之道 微信公众号)
  14. win10下安装numpy
  15. wps计算机打印双面输出,WPS轻松办公—-文档双面打印的两种方法
  16. 爬取mzi.com妹子图片网站(requests库)
  17. 工程项目管理系统源码
  18. xcode7的那些坑-“Your binary is not optimized for iPhone 5” (ITMS-90096) when submitting
  19. 这几款浏览器插件提升科研效率,2023年你安装上了吗
  20. 群晖aria2 bt没速度_群晖终于开窍了!联手迅雷推出下载套件 NAS功能再上一层楼...

热门文章

  1. Python私有属性与私有方法
  2. 新手入门必懂:关于西瓜视频广告,你不可不知的基础知识
  3. 平面设计自学能学会吗?学习平面设需要学多久?
  4. 从配置 Kivy、Buildozer 到 Android app 运行
  5. 大数定律和中心极限定理(未完成)
  6. linux 启动流程与文件系统管理
  7. Android攻城狮 Handler与子线程
  8. “东华春秋杯”上海大学生网络安全技能大赛决赛收官 聚焦高校人才培养
  9. node.js+uniapp计算机毕业设计安卓和悦少年文明礼仪监管APP(程序+APP+LW)
  10. 【CC精品教程】ContextCapture(CC)集群处理环境部署图文教程