王 第潜艇三天 引用类型 继承
面向对象第三天:
潜艇游戏第一天:
设计6个类,设计World类并测试
潜艇游戏第二天:
给6个类添加构造方法,并测试
潜艇游戏第三天:
设计侦察潜艇数组、鱼雷潜艇数组、水雷潜艇数组、水雷数组、炸弹数组,并测试
设计SeaObject超类,6个类继承SeaObject
给SeaObject设计两个构造方法,6个派生类分别调用
将侦察潜艇数组、鱼雷潜艇数组、水雷潜艇数组统一组合为SeaObject数组,并测试
回顾:
构造方法:构造函数、构造器、构建器--------复用给成员变量赋值
作用:给成员变量赋初值
与类同名,没有返回值类型(连void)
创建对象时被自动调用
若自己不写构造,默认一个无参构造,若自己写了构造,则不再默认提供
可以重载
this:指代当前对象,哪个对象调用方法它指的就是哪个对象
this的用法:
this.成员变量名-------------------------访问成员变量
当成员变量与局部变量同名时,若想访问成员变量则this不能省略
null:表示空,没有指向任何对象
若引用的值为null,则该引用不能进行任何操作了,若操作则发生 NullPointerException空指针异常
引用类型数组:
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)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)};
继承:
作用:代码复用
通过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("派生类构造");} }
super:指代当前对象的超类对象
super的用法:
super.成员变量名----------------------访问超类的成员变量(了解)
super.方法名()---------------------------调用超类的方法----------明天讲
super()-------------------------------------调用超类的构造方法
向上造型:---------------------代码复用
超类型的引用指向了派生类的对象
能点出来什么,看引用的类型-----------这是规定,记住就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(){} }
精华笔记:
引用类型数组:
继承:
作用:代码复用
通过extends来实现继承
超类/父类:共有的属性和行为
派生类/子类:特有的属性和行为
派生类既能访问自己的,也能访问超类的,但超类不能访问派生类的
一个超类可以有多个派生类
一个派生类只能有一个超类-----------单一继承
具有传递性
java规定:构造派生类之前必须先构造超类
派生类的构造方法中若没有调用超类的构造方法,则默认super()调用超类的无参构造方法
派生类的构造方法中若自己调用了超类的构造方法,则不再默认提供
super()调用超类构造方法,必须位于派生类构造方法的第一行
super:指代当前对象的超类对象
super的用法:
super.成员变量名----------------------访问超类的成员变量(了解)
super.方法名()---------------------------调用超类的方法----------明天讲
super()-------------------------------------调用超类的构造方法
向上造型:---------------------代码复用
超类型的引用指向了派生类的对象
能点出来什么,看引用的类型-----------这是规定,记住就OK了
补充:
继承意味着代码虽然我没有写,但也属于我,只是没有写在一起而已
泛化:将共有的抽出来的过程,泛化是设计层面的概念,从代码实现层面来说咱们就是继承,泛化就是继承
继承要符合is a(是一个)的关系
王 第潜艇三天 引用类型 继承相关推荐
- javascript面向对象系列第三篇——实现继承的3种形式
前面的话 学习如何创建对象是理解面向对象编程的第一步,第二步是理解继承.开宗明义,继承是指在原有对象的基础上,略作修改,得到一个新的对象.javascript主要包括类式继承.原型继承和拷贝继承这三种 ...
- 实验三 类的继承和多态性
实验三 类的继承和多态性 1.(1)编写一个接口ShapePara,要求: 接口中的方法: int getArea():获得图形的面积.int getCircumference():获得图形的周长 ( ...
- 汇编语言(王爽第三版) 实验5
汇编语言(王爽第三版) 实验5 由图可见: 第一问:cpu执行程序,程序返回前,ds一直未变,所以data段中的数据不变. 第二问:cpu执行程序,程序返回前,cs=1CD5,SS=1CD4,DS=1 ...
- 面向对象的三特性(继承、多态、封装 )Python
继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ParentCla ...
- JavaSE(三)——数组及继承
文章目录 1. 数组定义 1.1 一维数组 1.1.1 实例 1.1.2 冒泡排序 1.2 二维数组 1.3 数组和链表的区别 2. Arrays工具类 3. 继承 3.1 类的继承格式 3.2 继承 ...
- 汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序
参考:http://blog.sina.com.cn/s/blog_171daf8e00102xclx.html 汇编语言实验答案 (王爽):https://wenku.baidu.com/view/ ...
- 汇编语言(王爽 第三版)检测点
这本书购于2015.11.30,我大概从2016.3月开始读,历时大概三个月,我们学校开<微机原理与汇编语言>这门课,不过让人感觉很不爽,课本一开始就丢给你一堆东西,意欲让你记住这一大堆东 ...
- 20面向对象三特征 之继承 方法重写 super
继承是:多个类有重复内容,把重复内容放到一个新类中,就可以通过extends关键词去让原来的类和新类产生继承关系,子类只能拿到父类一部分信息.通过extends关键词去指明类与类之间的关系,一个父类可 ...
- 汇编语言答案-王爽第三版
汇编语言答案(王爽) 检测点1.1 (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 13位. (2)1KB的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 . (3) ...
最新文章
- splunk rest api search
- 8.tomcat认证访问
- 只用最适合的! 全面对比主流 .NET 报表控件:水晶报表、FastReport、ActiveReports 和 Stimulsoft...
- XML file does not appear to have any style information associated with it. XHTML程序出现这个错误
- 二层网络和三层网络的区别
- typora用Pandoc导出html,Typora安装 Pandoc实现导出功能
- Python numpy学习笔记(一)
- 前端开发~uni-app ·[项目-仿糗事百科] 学习笔记 ·007【uni-app和vue.js基础快速上手】
- 关于接口测试的一些总结
- 什么是AJAX (转贴)
- 对分类型变量,进行编码处理——pd.get_dummies()、LabelEncoder()、oneHotEncoder()
- Canny边缘检测算法解析
- API功能测试如何实施(转载自测试之道 微信公众号)
- win10下安装numpy
- wps计算机打印双面输出,WPS轻松办公—-文档双面打印的两种方法
- 爬取mzi.com妹子图片网站(requests库)
- 工程项目管理系统源码
- xcode7的那些坑-“Your binary is not optimized for iPhone 5” (ITMS-90096) when submitting
- 这几款浏览器插件提升科研效率,2023年你安装上了吗
- 群晖aria2 bt没速度_群晖终于开窍了!联手迅雷推出下载套件 NAS功能再上一层楼...
热门文章
- Python私有属性与私有方法
- 新手入门必懂:关于西瓜视频广告,你不可不知的基础知识
- 平面设计自学能学会吗?学习平面设需要学多久?
- 从配置 Kivy、Buildozer 到 Android app 运行
- 大数定律和中心极限定理(未完成)
- linux 启动流程与文件系统管理
- Android攻城狮 Handler与子线程
- “东华春秋杯”上海大学生网络安全技能大赛决赛收官 聚焦高校人才培养
- node.js+uniapp计算机毕业设计安卓和悦少年文明礼仪监管APP(程序+APP+LW)
- 【CC精品教程】ContextCapture(CC)集群处理环境部署图文教程