Java学习day08-初识面向对象
初识面向对象
1.万物皆对象
自然界中的任何事物,我们都可以对其分析,分析出这个事物的共有的特征以及共有的行为,理解为一个对象
2. 类和对象的关系
类是对象的抽象,比如人类,学生类,仅仅是抽象概念
对象是类的具体,比如赵四,学生小明,属于是真真实实存在的个体
3. 属性和方法
一类事物共有的特征,我们称之为属性(我们使用属性描述)
一类事物共有的行为,我们称之为方法(我们使用方法描述)
4. 创建类和对象
先分析此类事物的特征和行为,分别书写为属性和方法
5. 实例变量和局部变量区别

| 实例变量 | 描述 |
|---|---|
| 生命周期 | 随着对象的创建而存在(有生命,有默认值),随着对象被垃圾回收而死亡 GC |
| 存储位置 | 实例变量全部存在堆中 |
6.对象创建的过程

7. 构造方法
构造方法:用于创建对象的特殊方法
格式:访问修饰符 + 类名(){}
无参构造方法是默认存在的,如果书写了有参构造方法,无参构造将被覆盖。如需使用,必须显式书写。
8. 构造方法重载
构造方法重载 :同一个类中的构造方法,参数列表不同(个数、类型、顺序)
没有返回值,跟访问权限修饰符无关
实际开发中:一个类通常需要两个构造即可,一个无参构造,一个全参构造
9. this关键字
this关键字:表示当前对象
可以用于访问:本类中的属性/方法/构造方法
当我们执行创建对象调用构造方法,或者普通实例方法:JVM会传入一个隐式参数,this,将当前对象的地址值赋值给this。所以this就是指向当前对象
9.1 访问属性
this.属性名;
9.2 访问方法
this.方法名()
9.3 访问构造方法
this(); 无参调用
this(参数列表);有参调用
package com.atguigu.demo.demo2;
public class Firearms {
String gunName;
String gunType;
Double calliber;
int clipSize;
public Firearms() {
System.out.println(this);
}
public Firearms(String gunName) {
this.gunName = gunName;
}
public Firearms(String gunName, String gunType) {
this(gunName);//this调用构造方法
this.gunType = gunType;
this.fire();//this调用方法
}
public Firearms(String gunName, String gunType, Double calliber, int clipSize) {
this.gunName = gunName;//this调用属性
this.gunType = gunType;
this.calliber = calliber;
this.clipSize = clipSize;
}
public void m1(){
}
public void clipFed(){
System.out.println("子弹装填完毕!!!");
}
void cafeCracking(){
System.out.println("保险已打开");
}
public void runHome(){
System.out.println("目标已瞄准");
}
public void fire(){
System.out.println("目标已击毙!");
}
public static void main(String[] args) {
Firearms gun1 = new Firearms();
gun1.gunName ="ak47";
gun1.gunType = "步枪";
gun1.calliber = 7.62;
gun1.clipSize = 30;
System.out.println(gun1);
gun1.clipFed();
gun1.cafeCracking();
gun1.runHome();
gun1.fire();
Firearms gun2 = new Firearms("QBZ95","步枪",5.56,30);
System.out.println(gun2);
}
}
浙公网安备 33010602011771号