0
点赞
收藏
分享

微信扫一扫

初学Java面向对象第八天

猫er聆听没落的旋律 2022-04-14 阅读 77

笔记

1. 什么是类?什么是对象?
2. 如何创建类?如何创建对象?如何访问成员?
3. 方法的重载(overload/overloading):----------------------方便用户的调用
   - 发生在同一类中,方法名相同,参数列表不同
   - 编译器在编译时会根据方法的签名自动绑定方法

## 笔记:

1. 构造方法:构造函数、构造器、构建器----------------复用给成员变量初始化代码

   - 作用:给成员变量赋初始值

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

   - 在创建(new)对象时被自动调用

   - 若自己不写构造方法,则编译器默认提供一个无参构造方法,

     若自己写了构造方法,则不再默认提供

   - 构造方法可以重载

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

   ​          只能用在方法中,方法中访问成员变量之前默认有个this.

   this的用法:

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

     > 当成员变量和局部变量同名时,若想访问成员变量则this不能省略,其它一般省略

   - this.方法名()------------------调用方法(一般不用,了解)

   - this()----------------------------调用构造方法(一般不用,了解)

   ```java
   class Student {
       //成员变量
       String name;
       int age;
       String address;
       //构造方法
       Student(String name,int age,String address){
           this.name = name;       //zs.name="zhangsan"
           this.age = age;         //zs.age=25
           this.address = address; //zs.address="LF"
       }
   
       //方法
       void study(){
           System.out.println(name+"在学习...");
       }
       void sayHi(){
           System.out.println("大家好,我叫"+name+",今年"+age+"岁了,家住"+address);
       }
   }
   
   //构造方法和this的演示
   public class ConsDemo {
       public static void main(String[] args) {
           //Student zs = new Student(); //编译错误,Student类没有无参构造
           Student zs = new Student("zhangsan",25,"LF");
           Student ls = new Student("lisi",26,"JMS");
           zs.sayHi();
           ls.sayHi();
       }
   }
   ```

3. null:表示空,没有指向任何对象。若引用的值为null,则该引用不能再进行任何点操作   

   ​           了,若操作则发生NullPointerException空指针异常。

   ![null和NullPointerException](C:\Users\TEDU\Desktop\ooDay02\null和NullPointerException.png)


## 精华笔记:

1. 构造方法:构造函数、构造器、构建器----------------复用给成员变量初始化代码

   - 作用:给成员变量赋初始值

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

   - 在创建(new)对象时被自动调用

   - 若自己不写构造方法,则编译器默认提供一个无参构造方法,

     若自己写了构造方法,则不再默认提供

   - 构造方法可以重载

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

   ​          只能用在方法中,方法中访问成员变量之前默认有个this.

   this的用法:

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

     > 当成员变量和局部变量同名时,若想访问成员变量则this不能省略,其它一般省略

   - this.方法名()------------------调用方法(一般不用,了解)

   - this()----------------------------调用构造方法(一般不用,了解)

3. null:表示空,没有指向任何对象。若引用的值为null,则该引用不能再进行任何点操作   

   ​           了,若操作则发生NullPointerException空指针异常。

   

## 补充:

1. 成员变量和局部变量是可以同名的,但是使用的时候默认采取的是就近原则

2. 内存管理:由JVM管理

   - 堆:new出来的对象(包括成员变量)
   - 栈:局部变量(包括方法的参数)
   - 方法区:------------周五再讨论

3. 基本类型变量中装的是具体的数,引用类型变量中装的是堆中对象的地址

   ![基本类型与引用类型内存图](C:\Users\TEDU\Desktop\ooDay02\基本类型与引用类型内存图.png)


作业

1. 给战舰类、侦察潜艇类、鱼雷潜艇类、水雷潜艇类、水雷类、深水炸弹类添加构造方法

package ooDay02night;
//战舰
public class BattleShip {
    int width;
    int height;
    int x;
    int y;
    int speed;
    int life;
    BattleShip(){
        width = 60;
        height =26;
        x = 270;
        y =124;
        speed =2;
        life = 5;
    }
    void move(){
        System.out.println("战舰移动");
    }
}

package ooDay02night;

import java.util.Random;

//侦查潜艇
public class ObserveSubmarine {
    int wight;
    int height;
    int x;
    int y;
    int speed;
    ObserveSubmarine(){
        wight =100;
        height =200;
        x = -wight;
        Random rand =new Random();
        y=rand.nextInt(479-height-150+1)+150;
        speed=rand.nextInt(3)+1;
    }
    void move(){
        System.out.println("侦查潜艇x向右移动");
    }

}

package ooDay02night;

import java.util.Random;

//鱼雷潜艇
public class TorpedoSubmarine {
    int width;
    int height;
    int x;
    int y;
    int speed;
    TorpedoSubmarine(){
         width = 64;
         height =20;
         x = -width;
        Random random =new Random();
        y = random.nextInt(479-height-150+1)+150;
        speed = random.nextInt(3)+1;
    }
    void move(){
        System.out.println("鱼雷潜艇x向右移动");

    }

}

package ooDay02night;

import java.util.Random;

//鱼雷潜艇
public class TorpedoSubmarine {
    int width;
    int height;
    int x;
    int y;
    int speed;
    TorpedoSubmarine(){
         width = 64;
         height =20;
         x = -width;
        Random random =new Random();
        y = random.nextInt(479-height-150+1)+150;
        speed = random.nextInt(3)+1;
    }
    void move(){
        System.out.println("鱼雷潜艇x向右移动");

    }

}

package ooDay02night;

import java.util.Random;

//水雷
public class Mine {
    int width;
    int height;
    int x;
    int y;
    int speed;
    Mine(int x,int y){
        width =200;
        height=500;
        this.x=x;
        this.y=y;
        speed =-1;
    }
    void move(){
        System.out.println("水雷向上移动");
    }
}

package ooDay02night;
//深水炸弹
public class Bomb {
    int width;
    int height;
    int x;
    int y;
    int speed;
    Bomb(int x,int y){
        width=4;
        height=5;
        this.x=x;
        this.y=y;
        speed =1;

    }
    void move(){
        System.out.println("深水炸弹y向下移动");
    }
}

2. 在main中:创建1个战舰对象、至少4个侦察潜艇对象、2个鱼雷潜艇对象、2个水雷潜艇对象、2个水雷对象、2个深水炸弹对象,测试

package ooDay02night;

import cn.tedu.submarine.Battleship;

public class World {
    public static void main(String[] args) {
        BattleShip s=new BattleShip();
        ObserveSubmarine os1 = new ObserveSubmarine();
        ObserveSubmarine os2 = new ObserveSubmarine();
        ObserveSubmarine os3 = new ObserveSubmarine();
        ObserveSubmarine os4 = new ObserveSubmarine();
        TorpedoSubmarine ts1 = new TorpedoSubmarine();
        TorpedoSubmarine ts2 = new TorpedoSubmarine();
        MineSubmarine ms1 = new MineSubmarine();
        MineSubmarine ms2 = new MineSubmarine();
        Mine m1 = new Mine(123,245);
        Mine m2 = new Mine(526,252);
        Bomb b1 = new Bomb(55,66);
        Bomb b2 = new Bomb(55,44);
        System.out.println(s.width+","+s.height+","+s.x+","+s.y+","+s.speed+","+s.life);
        System.out.println(os1.wight+","+os1.height+","+os1.x+","+os1.y+","+os1.speed);
        System.out.println(os2.wight+","+os1.height+","+os2.x+","+os2.y+","+os2.speed);
        System.out.println(os3.wight+","+os3.height+","+os3.x+","+os3.y+","+os3.speed);
        System.out.println(os4.wight+","+os4.height+","+os3.x+","+os3.y+","+os3.speed);
        System.out.println(ts1.width+","+ts1.height+","+ts1.x+","+ts1.y+","+ts1.speed);
        System.out.println(ts2.width+","+ts2.height+","+ts2.x+","+ts2.y+","+ts2.speed);
        System.out.println(ms1.width+","+ms1.height+","+ms1.x+","+ms1.y+","+ms1.speed);
        System.out.println(ms2.width+","+ms2.height+","+ms2.x+","+ms2.y+","+ms2.speed);

    }
}
举报

相关推荐

0 条评论