3.1.1 类和对象

news2024/9/24 3:20:22

文章目录

  • 1.类
  • 2.对象
  • 3.类和对象的关系
  • 4.类的创建使用
  • 5.对象在内存中的存储过程
  • 6.对象创建过程分析


1.类

  1. java最基本的单位就是类,可以理解为类型
  2. 类是一类事物的抽象
  3. 可以理解为模板或者设计图纸

注意:类在现实世界并不存在,它只是一种对象的数据类型。例如乌鸦,鸽子等都是飞禽类,飞禽本身是并不存在的,它只是用来描述这一类动物的的一种类型。

2.对象

每个对象有三个特点,对象的状态,对象的行为和对象的标识。

  1. 对象的状态用来描述对象的基本特征
  2. 对象的行为用来描述对象的功能
  3. 对象的标识是指对象在内存中都有一个唯一的地址值用来和其他对象区分开来

3.类和对象的关系

计算机语言通过属性 + 行为来描述现实世界中的事物,在java语言中,我们可以通过类来描述一类事物,用成员变量描述事物的属性,用方法描述事物的行为。

其中:

  1. 我们先创建类,再通过类创建出对象
  2. 我们可以通过一个类创建出多个对象
  3. 类是一类事物的抽象,对象是具体的实现

4.类的创建使用

在编写代码之前,我们需要分析下需求:
比如我们要把手机这一类事物抽象成代码:
那么这个事物的类型就是"手机",可以用类来描述.
类中包含的就是手机抽取出来的共性的属性与功能.

手机的属性:颜色,尺寸,品牌,价格
手机的功能功能:打电话,发短信,听音乐

对象:除此之外,我们还可以创建对象,就相当于是照着图纸制造出来的一个个的手机,比如1号手机对象,包含特有的成员变量和方法
我们通过class关键字创建类,通过new关键字创建对象。
接下来我们开始编码吧!
打开idea,在之前的工程下创建新的包partTwo,并在包下创建类TestPhone.java
在这里插入图片描述

package partTwo;
/**
 * 本类用于面向对象的入门案例
 * 用来设计收集这一类事物
 */
//1.在同一个java文件中,可以定义多个class,但是被public修饰的公共类只能有一个
//  并且要求这个公共类的名字就是当前java文件的名字
public class TestPhone {
    public static void main(String[] args) {
        //4.在main()方法中,通过new关键字创建Phone的对象
        Phone p = new Phone();
        //5.可以通过手机类的对象p来调用方法
        p.call();
        p.message();
        p.video();
        //6.可以通过手机类的对象p来查看属性
        System.out.println(p.brand); //null
        System.out.println(p.color);  //null
        System.out.println(p.size);   //0.0
        System.out.println(p.price);  //0.0
        //7.通过new关键字创建手机类的对象p2
        Phone p2 = new Phone();
        //8.通过p2对象设置值
        p2. brand = "华为";
        p2. color = "五彩斑斓的黑";
        p2. price = 88888.88;
        p2. size = 5.6;
        //9.通过p2对象查看属性值
        System.out.println(p2.price);
        System.out.println(p2.brand);
        System.out.println(p2.color);
        System.out.println(p2.size);

    }
}

//1.通过class关键字创建手机类--用来描述手机这一类事物
//2.类似抽象的,类抽象的描述一类事物的特征/属性
//  特征:品牌 价格 颜色 尺寸
//  行为:打电话 发短信 看直播
class Phone{
    //2.通过成员变量描述一类事物的特征/属性/字段/成员变量--位置:类里方法外
    String brand; //品牌
    double price; //价格
    String color; //颜色
    double size;  //尺寸
    //3.通过方法描述一类事物的功能
    //方法的格式:修饰符,返回值类型,方法名(参数列表){方法体}
    public void call(){
        System.out.println("正在打电话*");
    }
    public void message(){
        System.out.println("正在发短信!");
    }
    public void video(){
        System.out.println("正在看直播~");
    }
}

5.对象在内存中的存储过程

Java把内存分成5大区域,我们重点关注栈和堆。

  1. 一般来讲局部变量存在栈中,方法执行完毕内存就被释放
  2. 对象(new出来的东西)存在堆中,对象不再被使用时,内存才会被释放
  3. 每个堆内存的元素都有地址值
  4. 对象中的属性都是有默认值的
    TIPS: 栈与队列指的是一种数据的结构。
    栈:先进后出(FILO – First In Last Out)
    队列:先进先出(FIFO – First In First Out)
    在这里插入图片描述

创建对象时,内存经历了什么:

  1. 创建对象时,会在堆中开辟好空间:break,price等,存放引用类型p,并把p放入栈底;
  2. 在堆内存中开辟一块空间,存放Phone对象
  3. 完成对象的初始化,并赋值默认值
  4. 给初始化完毕的对象赋予唯一的地址值
  5. 把地址值交给引用类型变量p来保存

6.对象创建过程分析

比如:Phone p = new Phone();这句话在内存中发生了什么?

  1. 可以在堆内存中开辟一块空间用来存放映像
  2. 这个对象需要进行初始化
  3. 初始化完毕以后就会为这个对象生成一个唯一的地址值
  4. 在栈内存中开辟一块空间用来存放引用类型Phone类型的变量p
  5. 将堆内存中对象的地址值交给引用类型的变量p来保存
  6. 后续就可以根据p中保存的地址,找到堆中的对象,并对对象做操作

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用DevExpress WPF组件实现异步加载TreeList节点?建议收藏

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。在本文中,我…

PADS Layout封装创建时批量放置焊盘的方法

批量放置焊盘一般是在BGA封装的是用的比较多,当然对于一些普通贴片焊盘也是挺常用的。 1、第一步:打开PCB封装编辑器,进入到封装编辑界面,放置焊盘后,点击焊盘右键“分步与重复”既可。2、第二步:点击以后弹…

常见的锁策略和synchronized的锁机制

文章目录一. 常见的锁策略1. 乐观锁和悲观锁2. 轻量级锁和重量级锁3. 自旋锁和挂起等待锁4. 普通互斥锁和读写锁5. 公平锁和非公平锁6. 可重入锁和不可重入锁二. synchronized的锁机制1. 锁升级/锁膨胀2. 锁消除3. 锁粗化一. 常见的锁策略 1. 乐观锁和悲观锁 乐观锁和悲观锁主…

C++ | 数据结构与算法 | 最小生成树算法讲解 | Kruskal Prim

文章目录前言Kruskal算法Prim算法前言 讲解之前,我们需要先明白连通图是指什么?连通图具有以一个顶点为起点可以到达该图中的任意一个顶点的特性,就算它们不直接相连,但是它们之间至少有一条可以递达的路径。并且连通图是针对无向…

劳务派遣协议范本整理版模板范本

劳务派遣协议范本整理版 甲方(用工单位):______ 法定代表人:____________ 地址:__________________ 电话:__________________ 传真:__________________ 乙方(派遣单位&#xf…

【Java】一文彻底弄懂访问修饰符(public/protected/默认/private)--建议收藏

博主简介:努力学习的预备程序媛一枚~博主主页: 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】 前言 OOP(Object Oriented Programing),即面向对象编程,最重要的功能/特点之一就是封装,这点在该专栏开篇博客【…

WebPack面试题汇总

1,Webpack有什么作用,谈谈你对它的理解 现在的前端网页功能丰富,特别是SPA(single page web application 单页应用)技术流行后,JavaScript的复杂度增加和需要一大堆依赖包,还需要解决Scss、Les…

记录--这样封装列表 hooks,一天可以开发 20 个页面

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 这样封装列表 hooks,一天可以开发 20 个页面 前言 在做移动端的需求时,我们经常会开发一些列表页,这些列表页大多数有着相似的功能:分页获取列表、上拉加载、下拉刷…

【Java 面试题合集】ThreadPoolExecutor 线程池面试题

文章目录自定义的线程池的 7 个参数如何合理设置核心线程数 corePoolSize 的大小《JAVA 并发编程实战》中的方案java 开发手册中为什么不允许使用 Executors 默认的实现?一个线程池中的线程异常了,那么线程池会怎么处理这个线程?线程池被创建后里面有线…

OpenCV——总结《图像处理-1》

1.HSV H - 色调(主波长)。S - 饱和度(纯度/颜色的阴影)。V值(强度) hsvcv2.cvtColor(img,cv2.COLOR_BGR2HSV)2.图像阈值 函数介绍: ret, dst cv2.threshold(src, thresh, maxval, type) sr…

嵌入式Linux从入门到精通之第九节:系统编程

系统编程概述 在讲解系统编程之前,先了解几个概念: 操作系统的作用: 操作系统用来管理所有的资源,并将不同的设备和不同的程序关联起来。 什么是Linux系统编程? 在有操作系统的环境下编程,并使用操作系统提供的系统调用及各种库,对系统资源进行访问。 学会了C语言再知…

Grafana9.3.x在windows上的安装及使用

Grafana9.3.x的安装及使用1. Grafana install1.1 Download1.2 Install2. User Guide1.1 Document1.2 Table视图背景色渲染3.Awakening1. Grafana install 1.1 Download 下载地址 Grafana Website: https://grafana.com/. 1.2 Install 直接点击安装就好了 进入conf目录复制一…

python集合语法与应用

python集合语法与应用 文章目录python集合语法与应用一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.创建2.增加3.删除4.集合运算5.拓展知识一6.拓展知识二总结一、实验目的 掌握集合的用法 二、实验原理 集合中只能包含数字、字符串、元组等不可变的类型的…

规则引擎,实现业务低代码开发的重要工具

规则引擎,是将业务执行抽象化的配置,通过其定义的数据结构、算法和流程来实现应用程序功能的普适化。 规则引擎可以帮助企业提高业务开发效率,提高运营的灵活性,降低运营成本与开发成本,让系统更加智能化灵活化。这里以…

【Rust】5. 所有权

5. 所有权 5.1 什么是所有权 5.1.1 栈(Stack)与堆(Heap) 5.1.2 所有权规则 5.1.3 变量作用域 5.1.4 String 类型 String 类型可进行修改,而字符串字面值是不可以的!(区别在于二者对内存的处理…

OAuth2

目录一、什么是OAuth2.0二、OAuth2中的角色三、认证流程四、生活中的Oauth2思维5. 令牌的特点6.OAuth2授权方式6.1 授权码6.2 隐藏方式6.3 密码方式6.4 凭证方式一、什么是OAuth2.0 OAuth2.0是目前使用非常广泛的授权机制,用于授权第三方应用获取用户的数据。 举例…

PythonWeb Django框架学习笔记

文章目录Django一、初步了解Django1.1 创建项目1.2 文件介绍1.3 APP的创建和说明添加新的app注册app创建页面1.4 templates模板templates语法单一变量列表循环【列表】字典循环【字典】列表套字典条件判断templates小结1.5 请求和响应案例:用户管理二、数据库操作2.…

前言技术之mybatis-plus 01

目录 1.什么是mybatis-plus 2.初体验 3.日志 4.主键生成策略 5.更新 6.自动填充 1.什么是mybatis-plus 升级版的mybatis,目的是让mybatis更易于使用, 用官方的话说“为简化而生” 官网: MyBatis-Plus 2.初体验 1.准备数据库脚本 数据…

再获殊荣!天云数据入选第一批北京市级企业技术中心,Hubble数据库提供新一代信息技术科技服务

为助力北京国际科技创新中心建设,贯彻落实北京市“十四五”时期高精尖产业发展规划,引导和支持企业加强创新能力,培育和引导企业技术中心建设,北京市经济和信息化局组织开展了2022年度第一批北京市市级企业技术中心的创建工作&…

【Python学习笔记】5. Python3 基本数据类型(上)——数值型、字符串型

前言 Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 Python3 基本数据类型 Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,变量就是变…