面向对象第3天
潜艇游戏第一天:
- 创建了6个类,创建World类并测试
潜艇游戏第二天:
- 给6个类添加构造方法,并测试
潜艇游戏第三天:
- 设计侦察潜艇数组、鱼雷潜艇数组、水雷潜艇数组、水雷数组、深水炸弹数组,并测试
- 设计SeaObject超类,设计6个类继承超类
- 给SeaObject设计两个构造方法,6个派生类分别调用
回顾:
- 构造方法: - 给成员变量赋初始值- 与类同名,没有返回值类型(连void都没有)- 在创建对象时被自动调用- 若自己不写构造方法,则编译器默认提供一个无参构造方法,若自己写了构造,则不再默认提供- 可以重载
- this:指代当前对象,哪个对象调用方法它指的就是哪个对象 this的用法: - this.成员变量名----访问成员变量(成员变量与局部变量同名时,访问成员变量必须加this.)- this.方法名()--------调用方法(了解)- this()------------------调用构造方法(了解)
- null:表示空,没有指向任何对象,若引用的值为null,则该引用不能进行任何点操作了, 若操作则发生NullPointerException空指针异常
笔记:
- 引用类型数组: - 与基本类型数组的区别: - 给数组元素赋值必须new一下- 若想访问对象数据必须通过数组元素打点
Student[] stus =newStudent[3];//创建Student数组对象stus[0]=newStudent("zhangsan",25,"LF");//创建Student对象stus[1]=newStudent("lisi",26,"JMS");stus[2]=newStudent("wangwu",24,"SD");System.out.println(stus[0].name);//输出第1个学生的名字stus[1].age =28;//修改第2个学生的年龄为28stus[2].sayHi();//第3个学生跟大家问好for(int i=0;i<stus.length;i++){//遍历所有学生 System.out.println(stus[i].name);//输出每个学生的名字 stus[i].sayHi();//每个学生跟大家问好}
2. 继承:
- 作用:代码复用
- 通过extends来实现继承
- 超类/父类:共有的属性和行为
派生类/子类:特有的属性和行为 - 派生类既能访问自己的,也能访问超类,但是超类不能访问派生类的
- 一个超类可以有多个派生类,一个派生类只能有一个超类---------单一继承
- 具有传递性
- java规定:构造派生类之前必须先构造超类
- 在派生类的构造方法中若没有调用超类的构造方法,则默认super()调用超类的无参构造方法
- 在派生类的构造方法中若自己调用了超类的构造方法,则不再默认提供
super()调用超类构造方法,必须位于派生类构造方法的第1行
- super:指代当前对象的超类对象 super的用法: - super.成员变量名---------------------访问超类的成员变量- super.方法名()-------------------------调用超类的方法--------------明天下午讲- super()-----------------------------------调用超类的构造方法
//super的演示publicclassSuperDemo{publicstaticvoidmain(String[] args){ Boo o =newBoo();}}classCoo{Coo(int a){}}classDooextendsCoo{Doo(){super(5);//调用超类的有参构造}/* //如下代码为默认的: Doo(){ super(); } */}classAoo{Aoo(){ System.out.println("超类构造");}}classBooextendsAoo{Boo(){//super(); //默认的,调用超类的无参构造 System.out.println("派生类构造");}}
精华笔记:
- 引用类型数组:- 与基本类型数组的区别: - 给数组元素赋值必须new一下- 若想访问对象数据必须通过数组元素打点
- 继承:- 作用:代码复用- 通过extends来实现继承- 超类/父类:共有的属性和行为 派生类/子类:特有的属性和行为- 派生类既能访问自己的,也能访问超类,但是超类不能访问派生类的- 一个超类可以有多个派生类,一个派生类只能有一个超类---------单一继承- 具有传递性- java规定:构造派生类之前必须先构造超类 - 在派生类的构造方法中若没有调用超类的构造方法,则默认super()调用超类的无参构造方法- 在派生类的构造方法中若自己调用了超类的构造方法,则不再默认提供> super()调用超类构造方法,必须位于派生类构造方法的第1行
- super:指代当前对象的超类对象 super的用法:- super.成员变量名---------------------访问超类的成员变量- super.方法名()-------------------------调用超类的方法--------------明天下午讲- super()-----------------------------------调用超类的构造方法
补充:
- 明日单词:
1)up:向上2)load:加载3)animal:动物4)tiger:老虎5)override:重写
作业:需要上传作业------在ooday04包中写,因为明天会用
1.创建Person类,包含:1)成员变量:name,age,address
2)构造方法:Person(3个参数){ 赋值 }3)方法:sayHi(){ 输出3个数据 }2.创建学生类Student,继承Person,包含:1)成员变量:学号stuId(String)2)构造方法:Student(4个参数){super调超类3参构造、赋值stuId }3.创建老师类Teacher,继承Person,包含:1)成员变量:工资salary(double)2)构造方法:Teacher(4个参数){super调超类3参构造、赋值salary }4.创建医生类Doctor,继承Person,包含:1)成员变量:职称level(String)2)构造方法:Doctor(4个参数){super调超类3参构造、赋值level }5.创建测试类Test,main中:1)创建学生数组stus,包含3个元素,给元素赋值,遍历输出名字并问好
2)创建老师数组tes,包含3个元素,给元素赋值,遍历输出名字并问好
3)创建医生数组docs,包含2个元素,给元素赋值,遍历输出名字并问好
本文转载自: https://blog.csdn.net/jason13579/article/details/123392559
版权归原作者 王克晶WKJ 所有, 如有侵权,请联系我们删除。
版权归原作者 王克晶WKJ 所有, 如有侵权,请联系我们删除。