0
点赞
收藏
分享

微信扫一扫

第七天java 面向对象

烟中雯城 2022-04-13 阅读 58

面向对象

笔记

1. 数组:

   - 复制:System.arraycopy(a,1,b,0,4);

     ​            int[] b = Arrays.copyOf(a,6);
     ​            a = Arrays.copyOf(a,a.length+1);

   - 排序:Arrays.sort(arr);

2. 方法:

3. 方法的定义:

   ​    修饰词  返回值类型  方法名(参数列表) {

   ​       方法体

   ​    }

4. 方法的调用:

   - 无返回值:方法名(有参传参);

   - 有返回值:数据类型  变量  =  方法名(有参传参);

     ​                   System.out.println( 方法名(有参传参) );

5. return:

   - return 值;
   - return;

## 笔记:

1. 什么是类?什么是对象?

   - 现实生活是由很多很多对象组成的,基于对象抽出了类

   - 对象:软件中真实存在的单个个体/东西

     类:类型/类别,代表一类个体

   - 类是对象的模板,对象是类的具体的实例

   - 类中可以包含:

     - 对象的属性/特征-----------------------------成员变量
     - 对象的行为/动作/功能---------------------方法

   - 一个类可以创建多个对象

2. 如何创建类?如何创建对象?如何访问成员?

   ```java
   //创建类:
   public class Student {
       //成员变量
       String name;
       int age;
       String address;
       //方法
       void study(){
           System.out.println(name+"在学习...");
       }
       void sayHi(){
           System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
       }
   }
   
   //创建对象:
   public class StudentTest {
       public static void main(String[] args) {
           //创建一个学生对象
           Student zs = new Student();
           //访问成员变量
           zs.name = "zhangsan";
           zs.age = 25;
           zs.address = "河北廊坊";
           //调用方法
           zs.study();
           zs.sayHi();
   
           Student ls = new Student();
           ls.name = "lisi";
           ls.age = 27;
           ls.address = "黑龙江佳木斯";
           ls.study();
           ls.sayHi();
   
           //1)创建了一个学生对象
           //2)给所有成员变量赋默认值
           Student ww = new Student();
           ww.study();
           ww.sayHi();
       }
   }
   ```

3. 方法的签名:方法名+参数列表

4. 方法的重载(overload/overloading):-------------------更方便方法的调用

   - 发生在同一类中,方法名相同,参数列表不同
   - 编译器在编译时会根据方法的签名自动绑定方法

   ```java
   //演示方法的重载
   class Aoo{
       void show(){}
       void show(String name){}
       void show(int age){}
       void show(String name,int age){}
       void show(int age,String name){}
       //int show(){ return 1; } //编译错误,重载与返回值类型无关
       //void show(String address){} //编译错误,重载与参数名称无关
   }
   
   //演示重载方法的调用
   public class OverloadDemo {
       public static void main(String[] args) {
           Aoo o = new Aoo();
           o.show();
           o.show("zhangsan");
           o.show(25);
           o.show("zhangsan",25);
           o.show(25,"zhangsan");
       }
   }
   ```

   


## 精华笔记:

1. 什么是类?什么是对象?

   - 现实生活是由很多很多对象组成的,基于对象抽出了类

   - 对象:软件中真实存在的单个个体/东西

     类:类型/类别,代表一类个体

   - 类是对象的模板,对象是类的具体的实例

   - 类中可以包含:

     - 对象的属性/特征-----------------------------成员变量
     - 对象的行为/动作/功能---------------------方法

   - 一个类可以创建多个对象

2. 如何创建类?如何创建对象?如何访问成员?

3. 方法的签名:方法名+参数列表

4. 方法的重载(overload/overloading):-------------------更方便方法的调用

   - 发生在同一类中,方法名相同,参数列表不同
   - 编译器在编译时会根据方法的签名自动绑定方法

## 补充:

1. OO:面向对象

   OOA:面向对象分析

   OOD:面向对象设计

   OOP:面向对象编程------------------你们所参与的

2. 高质量的代码:------------------年薪

   ​    复用性好、扩展性好、维护性好、可移植性好、健壮性好、可读性好、效率好......

3. 类是一种引用数据类型

4. ```java
   //            引用
   // 数据类型 引用类型变量  指向      对象
      Student     zs       =   new Student();
   ```

5. 默认值:

   ```java
   byte,short,int,long,char-----------------0
   float,double-----------------------------0.0
   boolean----------------------------------false
   引用类型----------------------------------null
   ```

6. 潜艇游戏需求:

   - 所参与的角色:战舰、深水炸弹、侦察潜艇、鱼雷潜艇、水雷潜艇、水雷

   - 角色的关系:

     - 战舰发射深水炸弹

     - 深水炸弹可以打潜艇(侦察潜艇、鱼雷潜艇、水雷潜艇),若打中:

       - 潜艇消失、深水炸弹消失

       - 打掉侦察潜艇,玩家得10分

         打掉鱼雷潜艇,玩家得40分

         打掉水雷潜艇,战舰得1条命

     - 水雷潜艇发射水雷

     - 水雷可以打战舰,若打中:

       - 水雷消失
       - 战舰减1条命(命数为0时游戏结束)


作业

1. 创建战舰类、侦察潜艇类、鱼雷潜艇类、水雷潜艇类、水雷类、深水炸弹类,设计类中的成员变量和move()方法
(1)

package cn.tedu.submarine;
//战舰
public class Battleship {
    int width ;     //宽
    int height;    //高
    int x;         //x坐标
    int y;        //y坐标
    int speed;    //移动速度
    int life;     //命

    void  move(){
        System.out.println("战舰移动");
    }

}

(2)

public class ObserveSubmarine {
    //侦察潜艇
    int width ;     //宽
    int height;    //高
    int x;         //x坐标
    int y;        //y坐标
    int speed;    //移动速度

    void move(){
        System.out.println("侦察潜艇向右移动");

    }
}

(3)

//鱼雷潜艇
public class TorpedoSubmarine {
    int width ;     //宽
    int height;    //高
    int x;         //x坐标
    int y;        //y坐标
    int speed;    //移动速度
    void move(){
        System.out.println("鱼雷潜艇向右移动");

    }
}

(4)

//水雷潜艇
public class MineSubmarine {
    int width ;     //宽
    int height;    //高
    int x;         //x坐标
    int y;        //y坐标
    int speed;    //移动速度
    void move(){
        System.out.println("水雷潜艇向右移动");

    }
}

(5)

//水雷
public class Mine {
    int width ;     //宽
    int height;    //高
    int x;         //x坐标
    int y;        //y坐标
    int speed;    //移动速度
    void move(){
        System.out.println("水雷向上移动");

    }
}

(6)

//深水炸弹
public class Bomb {
    int width ;     //宽
    int height;    //高
    int x;         //x坐标
    int y;        //y坐标
    int speed;    //移动速度
    void move(){
        System.out.println("深水炸弹向上移动");

    }
}

2. 创建World类,在main中:创建1个战舰对象、至少2个侦察潜艇对象、2个鱼雷潜艇对象、2个水雷潜艇对象、2个水雷对象、2个深水炸弹对象,并给属性赋值,调用方法测试

//整个游戏世界
public class World {
    public static void main(String[] args) {
        Battleship s =new Battleship();
        s.width = 50;
        s.height = 20;
        s.x = 100;
        s.y = 200;
        s.speed = 20;
        s.life = 5;
        System.out.println(s.width+","+s.height+","+s.x+","+s.y+","+s.speed+","+s.life);
        s.move();


        ObserveSubmarine os1 = new ObserveSubmarine();
        os1.width = 55;
        os1.height = 60;
        os1.x = 100;
        os1.y = 200;
        os1.speed = 30;

        System.out.println(s.width+","+os1.height+","+os1.x+","+os1.y+","+os1.speed);
        os1.move();



        TorpedoSubmarine ts1 = new TorpedoSubmarine();
        ts1.width = 55;
        ts1.height = 60;
        ts1.x = 100;
        ts1.y = 200;
        ts1.speed = 30;

        System.out.println(ts1.width+","+ts1.height+","+ts1.x+","+ts1.y+","+ts1.speed);
        ts1.move();


        TorpedoSubmarine ts2 = new TorpedoSubmarine();
        ts2.width = 55;
        ts2.height = 60;
        ts2.x = 100;
        ts2.y = 200;
        ts2.speed = 30;

        System.out.println(ts2.width+","+ts2.height+","+ts2.x+","+ts2.y+","+ts2.speed);
        ts2.move();

        MineSubmarine ms1 = new MineSubmarine();
        ms1.width = 55;
        ms1.height = 60;
        ms1.x = 100;
        ms1.y = 200;
        ms1.speed = 30;

        System.out.println(ms1.width+","+ms1.height+","+ms1.x+","+ms1.y+","+ms1.speed);
        ms1.move();

        MineSubmarine ms2 = new MineSubmarine();
        ms2.width = 55;
        ms2.height = 60;
        ms2.x = 100;
        ms2.y = 200;
        ms2.speed = 30;

        System.out.println(ms2.width+","+ms2.height+","+ms2.x+","+ms2.y+","+ms2.speed);
        ms2.move();
        Mine m1 = new Mine();
        m1.width = 55;
        m1.height = 60;
        m1.x = 100;
        m1.y = 200;
        m1.speed = 30;

        System.out.println(m1.width+","+m1.height+","+m1.x+","+m1.y+","+m1.speed);
        ts2.move();
        Mine m2 = new Mine();
        m2.width = 55;
        m2.height = 60;
        m2.x = 100;
        m2.y = 200;
        m2.speed = 30;

        System.out.println(m2.width+","+m2.height+","+m2.x+","+m2.y+","+m2.speed);
        ts2.move();
        Bomb b1 = new Bomb();
        b1.width = 55;
        b1.height = 60;
        b1.x = 100;
        b1.y = 200;
        b1.speed = 30;

        System.out.println(b1.width+","+b1.height+","+b1.x+","+b1.y+","+b1.speed);
        b1.move();
        Bomb b2 = new Bomb();
        b2.width = 55;
        b2.height = 60;
        b2.x = 100;
        b2.y = 200;
        b2.speed = 30;

        System.out.println(b2.width+","+b2.height+","+b2.x+","+b2.y+","+b2.speed);
        b2.move();


    }
}
举报

相关推荐

0 条评论