笔记
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空指针异常。

## 精华笔记:
1. 构造方法:构造函数、构造器、构建器----------------复用给成员变量初始化代码
- 作用:给成员变量赋初始值
- 与类同名,没有返回值类型(连void都没有)
- 在创建(new)对象时被自动调用
- 若自己不写构造方法,则编译器默认提供一个无参构造方法,
若自己写了构造方法,则不再默认提供
- 构造方法可以重载
2. this:指代当前对象,哪个对象调用方法它指的就是哪个对象
只能用在方法中,方法中访问成员变量之前默认有个this.
this的用法:
- this.成员变量名--------------访问成员变量
> 当成员变量和局部变量同名时,若想访问成员变量则this不能省略,其它一般省略
- this.方法名()------------------调用方法(一般不用,了解)
- this()----------------------------调用构造方法(一般不用,了解)
3. null:表示空,没有指向任何对象。若引用的值为null,则该引用不能再进行任何点操作
了,若操作则发生NullPointerException空指针异常。
## 补充:
1. 成员变量和局部变量是可以同名的,但是使用的时候默认采取的是就近原则
2. 内存管理:由JVM管理
- 堆:new出来的对象(包括成员变量)
- 栈:局部变量(包括方法的参数)
- 方法区:------------周五再讨论
3. 基本类型变量中装的是具体的数,引用类型变量中装的是堆中对象的地址

作业
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); } }