Java学习day08-初识面向对象

初识面向对象

1.万物皆对象

自然界中的任何事物,我们都可以对其分析,分析出这个事物的共有的特征以及共有的行为,理解为一个对象

2. 类和对象的关系

类是对象的抽象,比如人类,学生类,仅仅是抽象概念

对象是类的具体,比如赵四,学生小明,属于是真真实实存在的个体

3. 属性和方法

一类事物共有的特征,我们称之为属性(我们使用属性描述)

一类事物共有的行为,我们称之为方法(我们使用方法描述)

4. 创建类和对象

先分析此类事物的特征和行为,分别书写为属性和方法

5. 实例变量和局部变量区别

image

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

6.对象创建的过程

image

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);

    }
}

posted @ 2022-07-15 21:34  木0_0木  阅读(38)  评论(0)    收藏  举报