面相对象的成员介绍

news2024/9/23 1:28:34

2.面相对象的成员 -> 类:

a.类的定义:

  • 1.类是对公共特点的抽象,其中包含了很多成员,如属性(成员变量 )、方法、构造器等.要想很好的定义类,就必须要好好的了解这些类的成员
    在这里插入图片描述

b.访问修饰符

  • 控制属性的访问范围 有四种访问修饰符 public, proctected, 默认, private
  • 属性的定义类型可以为任意类型,包含基本类型或引用类型
  • 属性如果不赋值,有默认值,规则和数组一致。具体说: int 0,short 0, byte 0, long 0, float 0.0,double 0.0,char, boolean false,String null

c.类用处:

  • 1.对类进行实例化就产生了对象
  • 2.创建对象 = 类的实例化 = 实例化类
    在这里插入图片描述

d.类成员介绍:

  • 1.类的常见的成员有:属性和行为
  • 2.类的其他成员:
    • 构造器
    • 代码快
    • 内部类
d1.类的成员->属性:
  • 1.属 性:对应类中的成员变量 或者叫:field;或者叫:域,字段
    在这里插入图片描述
d2.类的成员->方法:
  • 1.对应类中的成员方法 或者叫:函数;或者叫:method
    在这里插入图片描述

3.面相对象的成员 -> 对象:

对象哪来的??是对类实例化所产生的

a.对象的创建与使用:

在这里插入图片描述


b.代码举例:

  • 1.编码实现创建对象及属性的调用:
// Object01.java 
package com.jianqun.package01;
import java.util.function.IntBinaryOperator;
/**
 * @author jianqun
 * @email:1033586391@qq.com
 * @creat 2022-01-31-16:11
 */
public class Object01 {
    public static void main(String[] args) {
        //实例化一只猫;即造出一只实实在在的猫来
        //把创建的第一支猫赋给cat1,就是这个猫的名字叫cat1
        Cat cat1 = new Cat();
        cat1.name = "小白";
        cat1.color = "白色";
        cat1.age = 3;

        //创建第二支猫
        Cat cat2 = new Cat();
        cat2.name = "小黑";
        cat2.color = "黑色";
        cat2.age = 30;
        System.out.println("第一支猫" + cat1.name + cat1.color);
    }
}

class Cat{
    /**
     * 猫的属性
     */
     String name;
     String color;
     int age;
    /**
     * 猫的行为
     */
}
  • 2.对象创建说明: new Cat()代表的才是真正的对象,cat只是代表的对象名字,或者说叫对象的引用
//直接创建
Cat cat;//先声明对象cat
cat = new Cat();//再创建对象cat
//直接创建对象
Cat cat = new Cat();

c.类与对象的区别和联系

  • 1.通过上面的代码可以看出:类是抽象的,是代表一类事务,比如人类,猫类…是一种数据类型
  • 2.对象是具体的,实际的,代表一个具体事务,即是实例
  • 3.类是对象的模板,对象是类的一个个的个体,对应着实例
  • 4.如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰(非static类型的属性
    在这里插入图片描述

d.匿名对象介绍:

  • 1.匿名对象就是:我们创建的对象没有赋给一个变量名,而直接调用这个对象的方法。这样的对象叫做匿名对象,如:new Person().shout();
  • 2.匿名对象智能调用一次
  • 3.使用情况 :
    • 如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象
    • 我们经常将匿名对象作为实参传递给一个方法调用
package com.jianqun.day08;
public class InstanceTest {
    public static void main(String[] args) {
        //创建Phone对象
        Phone phone = new Phone();
        System.out.println(phone);
        //对象调方法
        phone.sendEmail();
        phone.playGame();

        //匿名对象使用举例1:
        new Phone().price = 20000;
        new Phone().showPrice();//0.0
        new Phone().playGame();//打游戏.....

        //匿名对象使用举例2:
        PhoneMall phoneMall = new PhoneMall();
        phoneMall.show(new Phone());//发送邮件.....
    }
}

class PhoneMall{
    public void show(Phone phone){
        phone.sendEmail();
    }
}

class Phone{
    double price;//价格
    public void sendEmail(){
        System.out.println("发送邮件.....");
    }

    public void playGame(){
        System.out.println("打游戏.....");
    }

    public void showPrice(){
        System.out.println("手机价格::" + price);
    }
}

d.对象的内存解析:

d1.JVM内存结构简介:
  • 1.堆(Heap)
    • 此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存
    • 这一点在Java虚拟机规范中的描述是:所有的对象实例(Cat cat)以及数组都要在堆上分配
  • 2.栈(Stack)
    • 通常所说的栈(Stack)是指虚拟机栈
    • 虚拟机栈用于存储局部变量表、操作数栈等。
    • 局部变量表存放了编译期可知长度的各种基本数据类型(boolean、byte、char 、 short 、 int 、 float 、 long 、double)、对象引用(reference类型,它不等同于对象本身,是对象在堆内存的首地址), 方法执行完,自动释放。
  • 3.方法区(Method Area)
    • 方法区(Method Area)用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
      在这里插入图片描述
d2.案例1:分析对象创建过程:

在这里插入图片描述
在这里插入图片描述

d3.案例2:创建单个对象的内存解析:

以下分析忽略了main方法在栈中的存储,对对象中的属性做了进一步的分析

在这里插入图片描述
在这里插入图片描述

d4.案例3:一个类的多个对象的内存解析:
  • 1.如果我们创建了一个类的多个对象,则每个对象都独立的拥有一套属性(非static),也就是说,我们修改一个对象的属性a,不会影响另一个对象的属性a的值
    在这里插入图片描述
    在这里插入图片描述
  • 2.如下分析暂时忽略了jvm中的方法区
    在这里插入图片描述
d5.案例3:对象数组的内存解析:

在这里插入图片描述


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

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

相关文章

stm32开发之rt-thread使SysTick处于微妙级运行时,出现的问题记录

前言 在使用rt-thread开发时,想将调度的时间间隔缩短到微妙级别。根据提示需要修改对应的宏定义即可。这里在修改宏定义时,发现进入中断太过频繁,以至于主逻辑一直无法执行。这里测试的环境如下: 相关环境介绍 开发工具使用的是CLION测试开…

《编译原理:编程语言的幕后魔法师》

《编译原理:编程语言的幕后魔法师》 在计算机科学的宏伟殿堂中,编译原理犹如一位神秘而强大的魔法师,默默地施展着魔法,将人类可读的编程语言转化为计算机能够理解的机器语言。它是连接高级编程语言和计算机硬件的重要桥梁&#…

机器学习周报(8.26-9.1)

文章目录 摘要Abstractself-attetionQKV理解如何让self-attention更有效local attention/truncated attention方法stride attention方法Global Attention方法data driving方法Clusteringsinkhorn sorting network选取representative keys减少Keys数量的方法self-attentionSynth…

光电红外传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 三、程序设计 main.c文件 HW.h文件 HW.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 光电传感器对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线&#xff…

企业邮箱申请步骤

一家企业如果希望建立专业形象、提高内外部沟通效率,申请并配置一个企业邮箱是至关重要的一步。下面详细介绍企业邮箱申请的步骤,以确保您的企业能够顺利拥有一个高效、安全的电子邮件系统。 第一步:确定需求和选择邮箱服务提供商 在开始申请…

Docker培训

基本概念 容器是一种轻量级、可移植、自包含的软件打包技术,由两部分组成:应用程序、依赖环境。通过标准格式打包应用的所有代码和依赖关系,确保应用能够快速、可靠地在计算环境下运行。 当容器启动时,一个新的可写层被加载到镜…

Day90 代码随想录打卡|贪心算法篇---合并区间

题目(leecode T56): 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。…

中英翻译,就看这五款工具!

大家好,今天咱们来聊聊翻译工具。作为一个经常需要和英文打交道的小编,我可是试过不少翻译软件。今天就来跟大家聊聊5款工具在翻译英文上的表现,看看谁才是真正的翻译高手! 一、福昕翻译在线 网址:https://fanyi.pdf3…

【物理教学】不准确温度计图像代码分享

这段Python代码用于绘制温度计校准的图像。它包括以下功能: 用户输入:允许用户输入温度计在冰水混合物和沸水中的读数,以及一个实际温度值。 计算校准因子:根据用户输入的冰水混合物和沸水的读数,计算温度计的校准因子…

企业级使用docker实现负载均衡

利用Docker容器编排完成haproxy和nginx负载均衡架构实施 利用 Docker 编排实现 HAProxy 和 Nginx 负载均衡架构的介绍: 首先,使用 Docker Compose 进行容器编排。创建一个 haproxy.yml 文件,定义 HAProxy 和 Nginx 服务。HAProxy 容器作为前…

线性回归算法详解

目录 线性回归算法 线性回归方程 误差项分析 似然函数求解 线性回归求解 梯度下降算法 下山方向选择 梯度下降优化 梯度下降策略对比 学习率对结果的影响 代码实现 线性回归算法 线性回归是回归算法中最简单、实用的算法之一,在机器学习中很多知识点都是…

深入探讨Java JSON解析与HTML标签清除:详解与实例

“在Java开发中,解析和处理JSON文件是一项常见任务,尤其是当数据中包含大量HTML标签时,去除这些标签又是一项挑战。本文将详细讲解如何在Java中解析JSON文件,创建对应的实体类,并介绍去除HTML标签的方法,最…

RK3588开发板利用udp发送和接收数据

目录 1 send.cpp 2 receive.cpp 3 编译运行 4 测试 1 send.cpp #include <iostream> #include <string> #include <cstring> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> //…

【网络安全】Instagram 和 Meta 2FA 绕过漏洞

未经许可,不得转载。 文章目录 漏洞概述技术细节Meta 2FA 绕过步骤Instagram 2FA 绕过步骤总结漏洞概述 该漏洞允许攻击者在具有受害者Facabook账户权限的情况下,绕过 Meta 的双重身份验证 (2FA) 机制,实现账户接管;并且也能够绕过 Instagram 的双重身份验证 (2FA) 机制,…

堆排序的例题

答案&#xff1a;D C 知识点&#xff1a; 堆排序是把数组排成大顶堆或者小顶堆&#xff0c;选择根结点的最大值或者最小值&#xff0c;因此它是选择排序的方法 堆排序的方法是&#xff1a; 先把数组所有数据组成一个二叉树&#xff0c;然后调整结点与左右孩子树之间的位置&…

【Hot100】LeetCode—35. 搜索插入位置

目录 1- 思路二分 2- 实现⭐35. 搜索插入位置——题解思路 3- ACM 实现 题目连接&#xff1a;35. 搜索插入位置 1- 思路 二分 二分左区间的三种情况。由于目标值不一定在数组中&#xff0c;因此二分的过程中有三种情况判断 2- 实现 ⭐35. 搜索插入位置——题解思路 class So…

大模型参数高效微调技术原理综述(四)-Prompt Tuning

紧接着Stanford的Prefix Tuning论文&#xff0c;Google迅速发表了Prompt Tuning技术论文。Google声称该技术比Prefix Tuning更易上手且成本更低&#xff0c;因此该技术随后也成为了微调技术中的一个重要分支。 本文解读论文**《The Power of Scale for Parameter-Efficient Pr…

Java类加载器双亲委托模型概述

类加载器的双亲委派模型 模型图 加载原理 双亲委派模型的工作过程是&#xff1a;如果一个类加载器收到了类加载的请求&#xff0c;它首先不会自己去尝试加载这个类&#xff0c;而是把这个请求委派给父类加载器去完成&#xff0c;每一个层次的类加载器都是如此&#xff0c;因此所…

C/C++逆向:寻找mian函数(其他编译配置特征)

在上篇文章中写了在逆向中定位main函数几种方法&#xff0c;其中有一种方法是通过编译器特征定位 main 函数&#xff08;使用IDA分析简单demo程序获取特征&#xff0c;根据得到的特征可以定位相同编译器编译程序的main函数&#xff09;。在上一篇文章中我们提取了VS环境(VS2017…

【软件测试专栏】软件测试 — 概念篇

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;软件测试专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 软件测试 — 概念篇 关键词&#xff1a;软件需求、用户需求、开发…