ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-11-07 16:34:41  阅读:195  来源: 互联网

标签:JAVA 成员 Car brand System 面向对象 println 基本概念 out


文章目录


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,成员,Car,brand,System,面向对象,println,基本概念,out
来源: https://blog.csdn.net/qq_48666555/article/details/121182106

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有