【Java学习笔记】类与对象

Java 学习笔记 《面向对象原理与语言》——第二章 类和对象的基本概念 面向对象的程序设计(Object-Oriented Programming, OOP)是一种现代软件开发方法,它将客观世界中的事物抽象成程序中的对象,以对象为中心来组织代码和数据。与传统的面向过程的程序设计方法不同,面向对象编程更加注重数据的封装、继承和多态性,从而提高了代码的可重用性、可维护性和可扩展性。在面向对象编程思想中,对象被认为是具有状态和行为的实体[4]。状态描述了对象的属性,而行为则定义了对象可以执行的操作。例如,我们可以将现实世界中的“汽车”看作一个对象。 阅读详情

类与对象


什么是类?

知识迁移:类比 C 语言中的结构体

类的描述

类是一个对象的抽象,从字面意思就表示一个类的事物,类具有属性和方法(行为),对象是类的一个具体表现

总结:类是对象的抽象,对象是类的映射

实例理解:创建一个猫类

  • 这个类具有属性:姓名,年龄,体色…

  • 方法(行为):吃饭,跑步…

对象的引出

由这个类可以映射出不同的猫(对象),当属性和方法在变化时只需要在类中进行修改就可以映射到不同的类上,这也体现了类的便捷性

小结:类与对象的关系

  • 类是抽象的、概念的,代表一类事物,比如人类、猫类……,即它是数据类型。

  • 对象是具体的、实际的,代表一个具体事物,即是实例。

  • 类是对象的模板,对象是类的一个个体,对应一个实例。


快速入门

  • 如何创建一个类?

  • 如何创建一个对象?两种方式

    • 直接创建

    • 先声明后创建

第一种方式:直接创建一个对象

public class hello{
    public static void main(String[] args){
        person person1 = new person();  //直接创建
    }
}
class person{
    int age;
    String name;
    double height;
    String[] job; //属性既可以基本数据类型,也可以是引用类型
}

第二种方式:先声明一个对象,之后创建

public class hello{
    public static void main(String[] args){
        //先声明一个对象,然后创建
        person person1;
        person1 = new person();
    }
}
class person{
    int age;
    String name;
    double height;
    String[] job; //属性既可以基本数据类型,也可以是引用类型
}

代码解析

person person1 = new person();

在 main 方法中使用 new 创建一个类,用一个数据类型为 person 这个类的一个对象接收

重点:对象在内存中的存在形式

请添加图片描述

分析

  • (1)当还没有创建 cat 这个类并用一个数据类型为 cat 这个类的一个对象接收时,cat 在栈空间中指向空

  • (2)类创建后

    • 1. 在堆空间中分配一段空间,存储类中的成员变量,初始值为对应数据类型的默认值,最后把地址返回给 cat,使得cat 指向这个堆空间

    • 2. 在方法区加载类的属性和方法,只会加载一次

    • 3.(默认初始化和显示初始化)String 是一个类,当成员变量中有 String 出现时,会把 String 放到方法区中的一个常量池里面,把这个地址返回给堆空间中的 String

    • 4. 构造器初始化


类的要素一:属性

概念:成员变量 = 属性 =field(字段)

即成员变量是用来表示属性的

1. 简要提及访问修饰符

  • 作用:用来控制属性的访问范围

  • 类型

    • public

    • protected

    • 默认

    • private

2. 使用细节

  • (1)属性的定义类型可以为任意类型,包含基本类型和引用类型

  • (2)属性如果不赋值,有默认值,规则和数组一致

    数据类型默认值
    byte0
    short0
    int0
    long0L
    char‘\u0000’
    float0.0f
    double0.0d
    String(是一个类)null

属性的访问方法:使用类.属性的方式,可以用一个变量接收结果

注意点:如果属性是String类型,即是一个类(引用类型),需要和类一样,需要创建一个对象接收

代码示例

public clas objectexercise{
    public static void main(String[] args){
        person person1 = new person();
        int age = person1.age = 18;
        double height = person1.height = 1.63;
        String name = person1.name = "jackson";
        person1.job = new String[] {"student","programmer"};
        String[] job = person1.job
        System.out.println("age: " + age);
        System.out.println("height: " + height);
        System.out.println("name: " + name);
        System.out.print("job: ");
        for(int i = 0; i < person1.job.length; i++){
            System.out.print("第" + (i+1) + "份工作是:" + person1.job[i] + " ");
        }
    }
}
class person{
    int age;
    String name;
    double height;
    String[] job; //属性既可以基本数据类型,也可以是引用类型
}

//输出结果
age: 18
height: 1.63
name: jackson
job: 第1份工作是:student 第2份工作是:programmer

深刻理解对象的内存分配机制

过程再回顾

person p = new person()
p.name = "jack"
p.age = 10;
  • (1)先加载 Person 类信息(属性和方法信息,只会加载一次)

  • (2)在堆中分配空间,进行默认初始化

  • (3)把地址赋给 p,p 就指向对象

  • (4)进行指定初始化,比如 p.name = "jack"、p.age = 10

练习一

Person p1 = new Person();
p1.age  = 10;
p1.name = "小明";

Person p2 = p1;

问P2的属性是否和P1一致?

首先明确一点,类是引用类型,在传值的过程中传的地址,代码中把P1的地址赋给了P2,即P1和P2指向同一块堆空间,结果一致

练习二

// Person.java
public class Person {
    public int age;
    public String name;
}

// Main.java
public class Main {
    public static void main(String[] args) {
        Person a = new Person();
        a.age = 10;
        a.name = "小明";

        Person b;
        b = a;

        System.out.println(b.name);  // 小明

        b.age = 200;
        b = null;

        System.out.println(a.age);  // 200
        System.out.println(b.age);  // 会抛出 NullPointerException
    }
}
Java 学习笔记 Day07: 类与对象 通过定义类,可以抽象出具有相似属性和行为的对象,并通过创建对象来使用类的属性和方法。熟练掌握类与对象的概念和使用方法是 Java 编程的基础,为构建复杂的程序打下了坚实的基础。对象是类的实例,它具有类定义的属性和行为。可以使用点操作符来获取对象的属性值,并使用方法调用语法来执行对象的方法。使用赋值操作符可以给对象的属性赋值,使用方法调用语法可以调用对象的方法。一旦创建了对象,就可以通过点操作符来访问对象的属性和方法。要使用类的属性和方法,首先需要创建该类的对象。中,其中可以包含属性和方法的定义。 阅读详情

相关推荐

ROS入门(一)——ROS安装(vmware16+ubuntu20.04+ROS-Noetic)

嵌套:ROS可以在Ubuntu上运行,Ubuntu在虚拟机Vmware中安装。 从 虚拟机vmware安装→ubuntu安装→ros安装,逐步介绍安装ROS环境的过程。整个过程是我一步步跟着各种博客安装实现的,亲测可行。 版本: Vmware :Vmware Workstation16 Ubuntu :20.04 ROS :Noetic 其中vmware直接载当前最新版本就好,而ubuntu的版本要注意一下。 在ROS官网(cn - ROS Wiki),我们进入到ROS安装的步骤界面,可以看..

Netceor的博客 9740

第三十六章类是对象的抽象,对象是类的具体。

class 类名称{数据类型 属性名称;数据类型 属性名称2;public 返回值类型 方法名(参数1,参数2...){Java 语言中,定义类和对象都需要有自己的名字,这样给别人使用的时候,比较方便。定义对象要使用 new 关键字。

weixin_62458944的博客 716

扫地机器人自动回充技术大揭秘:红外、蓝牙、雷达哪种更适合你家?

本文深入解析扫地机器人自动回充技术的三种主流方案:红外、蓝牙和雷达/LiDAR,详细比较它们的原理、优缺点及适用场景。红外技术成本低但易受干扰,蓝牙穿透性好但精度随距离降低,雷达精度最高适合复杂环境。根据户型大小和家居环境,提供选购建议,帮助用户选择最适合自己家庭的自动回充方案。

weixin_29070721的博客 503

类和对象的关系

类是静态的,当类没有创建任何对象时,类本身不存在于内存中。 对象是动态的,对象的属性随着具体的行为变化而变化。 类是抽象的,对象是具体的。而具有相同属性和行为的一组对象称为集合。 ...

xiaoyiyi的博客 321

相机光学(三十八)——VCM(Voice Coil Motor)音圈马达

VCM(Voice Coil Motor)音圈马达全称Voice Coil Montor,电子学里面的音圈电机,是马达的一种。因为原理和扬声器类似,所以叫音圈电机,具有高频响、高精度的特点。其主要原理是在一个永久磁场内,通过改变马达内线圈的直流电流大小,来控制弹簧片的拉伸位置,从而带动上下运动。手机摄像头广泛的使用VCM实现自动对焦功能,通过VCM可以调节镜头的位置,呈现清晰的图像。弹片式结构滚珠式结构摩擦式结构Open loop开马达Close loop闭环马达。

图像学习之旅 7216

从零搭建A股量化交易系统:开源框架选型与实战部署指南

本文详细介绍了从零搭建A股量化交易系统的完整流程,重点分析了开源框架VNPY和QMT的选型与实战部署。内容涵盖系统架构设计、策略开发、性能优化及实盘过渡方案,为开发者提供了一套完整的A股实盘量化交易解决方案,助力高效构建稳定可靠的量化交易系统。

sugar的博客 1271

类和对象(上)

一、类与对象的初步认识 1.类是对象的抽象,而对象是类的具体实例。   类是抽象的,不占用内存;而对象是具体的,占用存储空间。 2.面向过程与面向对象 C语言是面向过程的,关注的是过程中的数据与方法。 C++是面向对象的,关注的是对象’的属性与功能。 二、类 1.在C++中,结构体内不仅可以定义变量,也可以定义函数。 struct student { char _name[20...

ZY_20181010的博客 416

【Elasticsearch专栏 16】深入探索:Elasticsearch的Master选举机制及其影响因素分析

Elasticsearch的Master选举机制是其分布式架构的基石,确保集群高可用性和数据一致性。通过多数派协议,节点间交换信息并投票选举Master,以维护集群状态和处理请求。该机制自动处理故障转移,保障服务连续性。

weixin_40736233的博客 1774

黑马程序员——Java基础——面对对象

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 面向对象 一、面对对象的特点 : 1.将复杂的事情简单化 2.面性对象将以前的过程中的执行者变成了指挥者。 3.面向对象这种思想是符合现在人们思考习惯的一种思想 过程和对象在我们程序中是如何体现的呢? 过程就是函数,对象时将函数等一些内容进行了封装。

dk2508的专栏 609

Matlab TreeBagger实战:用随机森林预测房价的5个关键步骤(附完整代码)

本文详细介绍了使用Matlab的TreeBagger工具包构建随机森林模型预测房价的完整流程。通过波士顿房价数据集实战,涵盖数据预处理、模型构建、参数调优、特征重要性分析及高级应用(如分位数回归)等5个关键步骤,并附有完整代码,帮助读者快速掌握这一强大的回归分析工具。

ol789012的博客 444

目前最新NIST随机数测试软件下载、安装、及使用教程

最近由于科研需要,在搞一些随机数的测试的事情,众所周知 随机数测试我们可以使用NIST的软件进行多大15项的随机测试,我也在网上查找了很多大牛的博客,但是都是年代久远,很多的链接现在都是物是人非,都是不能直接使用了,今天顺便抽点时间更新一下这个NIST软件的下载及使用。我们首先讲一下该软件的下载:1.我们直接取NIST的官网(https://csrc.nist.gov/)下载即可 ;链接如下:下载...

Miracle.Zhao的博客 3万+

JAVA类和对象访问_Java 类和对象

类和对象类是对象的抽象,对象是类的具体。类是概念模型,定义对象的所有特性和所需的操作,对象是真实模型,是一个具体的实体。类是描述了一组有相同特性(属性)和相同行为(方法)的一组对象的集合。对象所拥有的特征在类中表示时称为类的属性,执行的操作称为类的方法。类是构造面向对象程序的基本单位,抽取了同类对象的共同属性和方法形成的“模版”。对象是实体的描述,要创建才存在,有了对象才能对对象进行操作。抽象类a...

weixin_39807541的博客 460

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2663

java类与对象 学习笔记

类与对象 面向对象(Object Oriented) 一、面向对象 三大特性: 封装性:对象的成员属性和行为看做一个不可分割的整体,一些不想让外界看到的方法也隐藏起来 继承性:java是类的单继承,接口的多继承,是从一个基础的类上派生出反应一些特殊性的类,如几何类下面可以包括圆类,正方体类等 多态性:多态是指程序中允许出现重名现象。 方法重载:根据函数参数的不同,允许同名函数完成不同的工作 对...

yaologos的博客 409

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

菜鸡的Java学习笔记——类和对象

Java学习笔记——类和对象 文章目录Java学习笔记——类和对象什么是类和对象Java中对于类的定义创建类的实例对象成员变量的使用方法(Method)包(Package)访问修饰符面向对象三大特征封装继承多态ArrayList类的使用 什么是类和对象 类是抽象的概念,是对象的类型(模板),具有相同属性和方法的一组对象的集合;对象的属性,即为对象所具有的特征;对象的方法,即为对象执行的操作。 类描述对象的具体信息,而对象是一个具体实体。在java中,所有的java程序都以类class为组织单元 举个栗子,显

WTB的博客 190

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java学习笔记之---类和对象

Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { String name; String color; public void eat(){ System.out.println("吃饭"...

weixin_30502965的博客 86

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【Java全栈学习笔记-U1-day09】 类和对象

访问修饰符 数据类型 属性名称 = 初始值;//例如访问修饰符 返回值类型 方法名称(参数列表){//方法体...return 返回值;//方法体...注意:方法无返回值时,返回值类型为voidpublic void 方法名(){//方法体...示例:定义车类//定义车类 汽车类型//定义一系列的属性和方法//1.定义属性//品牌//颜色//价格//定义车跑的方法System.out.println("车正在行驶的过程中......");//定义车载音乐。

m0_47109389的博客 870

JAVA类与对象学习笔记

JAVA是一门面向对象的编程语言,学习JAVA首先要理解类与对象的概念。 一、面向对象的编程 面向对象:程序由对象来组织的,对象是属性及其操作的封装体,对象可按其性质划分为类,对象成为类的实例;不同对象之间通过信息传递进行联系。 面向过程:就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 二、类与对象 对象:一个具体的实体、一个具体的事物。 类...

weixin_45013497的博客 274

java类和对象笔记_Java——类与对象学习笔记

一、什么是类,什么是对象?都知道java是一门面向对象的语言,那到底什么是面向对象呢?说到对象这一个概念,就必须提到类。对象与类可以说是相依相存的,类按照字面意思很好理解,人类,鸟类,树类,都是平时生活中常常提到类;而对象就是你平时眼睛见到的一只鸟,一个人,一棵树。所以,类是一个抽象的东西,而对象才是生活中的实体。类就是将具有相同特点的事物抽象出来而形成的一个统称,比如鸟类都会飞,人会说话,会思考...

weixin_35148943的博客 226

java学习笔记——06 类与对象

类的定义包括两部分,及类声明和类体,基本格式是class 类名{类体的内容//class 类名 是类的声明部分,花括号里面是类体抽象的关键是抓住事物的两个方面——属性和行为,即数据以及在数据上进行的操作。因此,类体的内容包括两部分:1)变量的声明(用来存储属性的值,体现对象的属性)2)方法的定义(方法可以对类中声明的变量进行操作,即给出算法,体现了对象的行为)

昭与云的博客 307

Java类和对象的学习笔记

本篇介绍了面向对象和面向过程的关系,类的定义,对象的成员(成员变量,成员方法)和对象成员访问,类和对象的关系 对象的初始化,对象的构造(构造方法的定义和使用),对象内的this介绍和用法...

记录并分享学习编程时的知识点... 1751

【狂神说java学习笔记】九:java面向对象(类与对象的创建、构造器)

本文整理了狂神说Java课程的面向对象编程笔记,包括类与对象的创建及内存分析、构造器的特点与使用以及类与对象的简单小结。

weixin_41637679的博客 516

Java学习笔记10面向对象和类_20200327

这里写自定义目录标题第10章 面向对象编程01 练习02 对象和类 第10章 面向对象编程 01 练习 02 对象和类 面向对象编程和面向过程编程 对象,Object 一台电视机,一辆汽车。 对象有两个特征:状态和行为。 对象将其状态存储在字段(变量)中,并通过方法公开其行为。方法对对象的状态进行操作。 例1: import java.awt.Point; public class ...

gotojoko的博客 196

Java学习笔记——类和对象

类和对象里的相关知识点

ShirleyZ1007的博客 809

java学习笔记——类和对象

类和对象 文章目录类和对象面向对象概述面向过程面向对象面向对象思维的好处类和对象类和对象在现实生活中的映射类的定义在内存中创建对象:使用对象局部变量成员变量(类的属性)匿名对象构造器(构造方法)对象数组this关键字 面向对象概述 面向过程 分析解决问题的所需要的步骤,然后我们用函数来一步一步的调用实现。 举例:把大象放入冰箱 (1)打开冰箱门 (2)放入大象 (3)关闭冰箱 面向过程的思想是注...

coydone的博客 391

Java学习笔记——类与对象

Java学习笔记——类与对象 2020.7.11-7.16 Java学习笔记整理 面向对象编程 对象最重要的特点:属性属性(一些参数、数值)和方法(一些行为,他能干什么)。 例如,在学校里,会有学生和老师等实体,学生有学号、姓名、所在班级等属性(数据),学生还有学习、提问、吃饭和走路等操作。学生只是抽象的描述,这个抽象的描述称为“类”。在学校里活动的是学生个体,即张同学、李同学等,这些具体的个体称为“对象”,“对象”也称为“实例”。 类——Class 类是描述了一组有相同特性(属性)和相同行为(方法)的一组

Xu_0910的博客 276
上一篇: 【心得分享】一脚踹飞假努力,警惕努力陷阱,明确努力方向!!!
下一篇: 【Java学习笔记】成员方法
jackson凌
博客等级 码龄2年 476粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackson凌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值