Java教程

JAVA面向对象之类和对象基本概念

本文主要是介绍JAVA面向对象之类和对象基本概念,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 什么是对象
    • 一 。两种变成思想:
    • 二。如何运用面向对象思想
    • 三。类和对象的关系
  • 如何定义类
    • 1. 如何描述对象
    • 2.成员变量不初始化
    • 3. 如何定义类:
  • 成员方法详解
  • JVM内存模型
    • 1. 堆:
    • 2. 栈:
    • 3. 栈和堆的关系:
  • 对象的创建过程
    • 1. 创建对象:
    • 2. 访问成员变量
    • 3. 调用成员方法:c.run();

JAVA面向对象—类和对象基本概念
本文参考内容: 牛客网,此内容仅为本人的学习知识总结。

什么是对象

一 。两种变成思想:

  1. 面向过程:分析出解决问题的步骤,然后用函数逐一实现每一步,再一次调用这些函数。
  2. 面向对象:分析出系统中应包含哪些物体/事物/对象,以及它们之间的关系,再用特定于法描述这些对象和关系。

二。如何运用面向对象思想

三。类和对象的关系

  1. 类:抽象的,不是具体的实例。用于描述一批对象的信息
  2. 对象:具体的,是根据类的描述,由JVM创建出来的一个实例,这个过程叫做实例化。
  3. 举例:人:类 perth:对象
  4. 类是自定义的数据类型,通过这个类创建对象,实际上就是初始化这种类型的变量。
    自定义的数据类型不能直接引用,只能用 new 初始化。

如何定义类

1. 如何描述对象

属性:对象的静态特征;用变量来描述,这样的变量叫成员变量。
行为:对象的动态特征;用方法来描述,这样的变量叫成员方法。
在这里插入图片描述

  1. 定义成员变量
    语法:修饰符 数据类型 变量名 = 初始值; 不初始化就会给默认值
  2. 定义成员方法
    语法:修饰符 返回类型 方法名(参数列表){…} 注:成员方法不能被static关键字修饰 没有返回类型用void,此事无需return

2.成员变量不初始化

当成员变量不初始化(不赋值)直接打印输出时,JVM会给它默认值,不同类型的默认值不同。
实例:

Game.java:

package nowcoder3.part02;
/*
* 成员方法详解
* */
public class Game {
    public static void main(String[] args) {


        Car c = new Car();
        System.out.println(c.brand);
        System.out.println(c.color);
        System.out.println(c.maxSpeed);
    }
}

Car.java:

package nowcoder3.part02;

public class Car {
    //成员变量
    String brand;
    String color;
    int maxSpeed;
    }

运行结果:
@perth_susu
不同类型的默认值:
在这里插入图片描述

3. 如何定义类:

实列:
Game.java:

package nowcoder3.part01;

//游戏类

public class Game {
    public static void main(String[] args) {
        //创建一个赛车
        Car c = new Car();
        //访问成员变量
        c.brand="宝马";
        c.color="黑色";
        System.out.println(c.brand);
        System.out.println(c.color);
        System.out.println(c.maxSpeed);
        //访问成员方法
        c.run();

        //再创建一个对象
        Car r = new Car();
        r.brand = "大奔";
        r.color = "绿色";
        System.out.println(r.brand);
        System.out.println(r.color);
        System.out.println(r.maxSpeed);
        r.run();

        //直接打印对象
        System.out.println(c);
        System.out.println(r);
    }
}

Car.java:

package nowcoder3.part01;
//赛车类
public class Car {
    //成员变量
    String brand;
    String color;
    int maxSpeed = 500;
    //成员方法
    void run(){
        System.out.println("Running...");
    }
}

运行结果:
在这里插入图片描述
在这里插入图片描述
因为两个对象的哈希码值(地址)并不同,所以这是两个对象。

成员方法详解

  1. 成员方法可以直接访问当前类的所有成员变量;
  2. 成员方法可以直接访问当前类的所有成员方法;
  3. 成员方法参数可以是基本数据类型,也可以是引用数据类型,包括自定义的类型。

实例:
Game.java:

package nowcoder3.part02;
/*
* 成员方法详解
* */
public class Game {
    public static void main(String[] args) {

        Car c1 = new Car();
        c1.brand="宝马";
        c1.color="黑色";
        c1.maxSpeed=666;
        c1.run();

        Car c2 = new Car();
        c2.brand="奔驰";
        c2.color="红色";
        c2.maxSpeed=999;
        c2.run();

    }
}

Car.java:

package nowcoder3.part02;

public class Car {
    //成员变量
    String brand;
    String color;
    int maxSpeed;
    //行驶
    void run(){
        //方法内声明的变量是局部变量,只能在方法内访问
        //调用成员变量
        System.out.println(color + brand +"速度是" + maxSpeed);
        //调用成员方法
        startup();
        speedup();
        stop();
    }


    //启动
    void startup(){
        System.out.println(brand+"启动!");
    }
    //加速
    void speedup(){
        System.out.println(brand+"加速!");
    }
    //刹车
    void stop(){
        System.out.println(brand+"刹车!");
    }
}

运行结果:
在这里插入图片描述

JVM内存模型

JVM启动时会向系统申请一块内存,它将这块内存划分为若干个子区域,用以存放不同形式的。数据。
在这里插入图片描述

1. 堆:

堆用于存储引用类型的数据;
这些数据相互之间是无序的; .
堆中数据是可以反复使用的;
JVM会定期清理堆中的垃圾数据;

2. 栈:

栈以方法为单元存储数据,这样的单元叫方法栈帧;
栈中存放的数据是有序的,遵循着先进后出的规则;
方法调用结束后,它占有的方法栈帧将会立刻释放;

注意:出栈入栈顺序不同

3. 栈和堆的关系:

在这里插入图片描述

对象的创建过程

通过实例理解:

public static void main(String[] args) {
  
        Car c = new Car();
        c.brand="宝马";
        c.color="黑色";
        c.maxSpeed=500;
        c.run();
        }

1. 创建对象:

Car c = new Car();
3步 main()入栈—>创建对象—>赋值

2. 访问成员变量

c.brand="宝马";
c.color="黑色";
c.maxSpeed=500;

3. 调用成员方法:c.run();

这篇关于JAVA面向对象之类和对象基本概念的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!