CGB2202面向对象第3天

面向对象第3天

潜艇游戏第一天:

  1. 创建了6个类,创建World类并测试

潜艇游戏第二天:

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

潜艇游戏第三天:

  1. 设计侦察潜艇数组、鱼雷潜艇数组、水雷潜艇数组、水雷数组、深水炸弹数组,并测试
  2. 设计SeaObject超类,设计6个类继承超类
  3. 给SeaObject设计两个构造方法,6个派生类分别调用

回顾:

  1. 构造方法:
    • 给成员变量赋初始值
    • 与类同名,没有返回值类型(连void都没有)
    • 在创建对象时被自动调用
    • 若自己不写构造方法,则编译器默认提供一个无参构造方法,若自己写了构造,则不再默认提供
    • 可以重载
  2. this:指代当前对象,哪个对象调用方法它指的就是哪个对象
    this的用法:
    • this.成员变量名----访问成员变量(成员变量与局部变量同名时,访问成员变量必须加this.)
    • this.方法名()--------调用方法(了解)
    • this()------------------调用构造方法(了解)
  3. null:表示空,没有指向任何对象,若引用的值为null,则该引用不能进行任何点操作了,
    若操作则发生NullPointerException空指针异常

笔记:

  1. 引用类型数组:
    • 与基本类型数组的区别:
      • 给数组元素赋值必须new一下
      • 若想访问对象数据必须通过数组元素打点
    Student[] stus = new Student[3]; //创建Student数组对象
    stus[0] = new Student("zhangsan",25,"LF"); //创建Student对象
    stus[1] = new Student("lisi",26,"JMS");
    stus[2] = new Student("wangwu",24,"SD");
    System.out.println(stus[0].name); //输出第1个学生的名字
    stus[1].age = 28; //修改第2个学生的年龄为28
    stus[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行

  1. super:指代当前对象的超类对象
    super的用法:
    • super.成员变量名---------------------访问超类的成员变量
    • 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("派生类构造");
         }
     }
    

精华笔记:

  1. 引用类型数组:

    • 与基本类型数组的区别:
      • 给数组元素赋值必须new一下
      • 若想访问对象数据必须通过数组元素打点
  2. 继承:

    • 作用:代码复用
    • 通过extends来实现继承
    • 超类/父类:共有的属性和行为
      派生类/子类:特有的属性和行为
    • 派生类既能访问自己的,也能访问超类,但是超类不能访问派生类的
    • 一个超类可以有多个派生类,一个派生类只能有一个超类---------单一继承
    • 具有传递性
    • java规定:构造派生类之前必须先构造超类
      • 在派生类的构造方法中若没有调用超类的构造方法,则默认super()调用超类的无参构造方法
      • 在派生类的构造方法中若自己调用了超类的构造方法,则不再默认提供

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

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

    • super.成员变量名---------------------访问超类的成员变量
    • super.方法名()-------------------------调用超类的方法--------------明天下午讲
    • super()-----------------------------------调用超类的构造方法

补充:

  1. 明日单词:
    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个元素,给元素赋值,遍历输出名字并问好

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>