初始面相对象

初始面向对象

类和对象的关系

在这里插入图片描述

类:对对象向上抽取出像的部分、公共的部分以此形成类,类就相当于一个模版。

对象:在某个模版下的具体的产物可以理解为对象,对象就是一个一个具体的实例,就相当于这个模版下具体的产品,万事万物皆对象。

总的来说类是抽象的,对象是具体的。

注意:在开发过程中,先写类,再写对象!

面相过程与面相对象

面向过程是以事件为中心,按照我们编写的代码是根据完成一个步骤的过程来进行。

面相对象是以对象为中心,先把要完成的功能封装成一个一个的对象,通过调用对象的方法或属性来完成功能。

例如:把大象放入冰箱

面相过程思想:

  1. 打开冰箱门
  2. 把大象放入冰箱
  3. 关闭冰箱门

代码实现:

public class Test01{public static void main(String[] args){openss();putIn();closes();	}public static void openss(){System.out.println("打开冰箱门");}public static void putIn(){System.out.println("把大象放进冰箱");}public static void closes(){System.out.println("关闭冰箱");} }

面向对象思想:

  1. 先找类(大象,冰箱,测试类)

  2. 找动作

    • 冰箱:可以开门和关门
    • 大象:可以进入冰箱
    • 测试类:main方法
  3. 测试类:创建大象和冰箱的具体对象,调用其功能。

代码实现:

public class Test11{public static void main(String[] args){Refrigerator refrigerator = new Refrigerator();//创建冰箱对象Elephant elephant = new Elephant();//创建大象对象//调用方法refrigerator.openss();elephant.move();refrigerator.closes();}}class Refrigerator{public static void openss(){System.out.println("打开冰箱门");}public static void closes(){System.out.println("关闭冰箱");}}class Elephant{public static void  move(){System.out.println("大象进入冰箱");}
}

类的编写

  • 给类起一个见名知意的名字,将首字母大写并且遵循之前所讲到的驼峰命名原则。
  • 类的特性编写,特性即类的属性部分。
  • 类的功能编写,功能即类的方法部分。

代码实现:

public class Person {String name;char sex;int age;public void eat(){System.out.println("吃饭");}public void sleep() {System.out.println("睡觉");}	public static void method() {System.out.println("静态方法");}
}

对象的创建和使用

  • 创建格式:类名 对象名 = new 类名

  • 给对象的属性赋值:对象名.属性名 = 值

  • 调用对象的方法: [返回值类型名字 = ] 对象名.方法名(参数列表);

代码实现:

public class Test01 {public static void main(String[] args) {//创建对象Person p = new Person();//设置属性p.name = "胡歌";p.sex = '男';p.age = 41;//获取属性System.out.println(p.name);System.out.println(p.sex);System.out.println(p.age);//调用成员方法p.eat();p.sleep();//调用静态方法Person.method();}
}

对象的创建过程

  1. 在第一次遇到一个类的时候,对这个类要进行加载,只加载一次。
  2. 创建对象,在堆中开辟空间
  3. 对对象进行初始化操作,属性赋值都是默认的初始值。
  4. new关键字调用构造器,执行构造方法,在构造器中对属性重新进行赋值

内存分析

在这里插入图片描述

创建多个对象的内存分析:

public class Test01 {public static void main(String[] args) {Person p1 = new Person();p1.name = "胡歌";p1.sex = '男';p1.age = 41;System.out.println(p1.name);System.out.println(p1.sex);System.out.println(p1.age);p1.eat();p1.sleep();System.out.println("-----------------------------");Person p2 = new Person();p2.name = "迪丽热巴";p2.sex = '女';p2.age = 18;System.out.println(p2.name);System.out.println(p2.sex);System.out.println(p2.age);p2.eat();p2.sleep();}
}

内存分析:

在这里插入图片描述
注意:

  1. 类的class文件只加载1次
  2. 成员变量:每个对象独享一份
  3. 成员方法里的this表示调用该方法的对象(this后面会讲)

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

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

相关文章

RabbitMQ之生产批量发送

为什么要用生产批量发送? 批量发送消息,可以提高MQ发送性能。但是 RabbitMQ 并没有提供了批量发送消息的 API 接口,使用 spring-amqp 的 BatchingRabbitTemplate 实现批量能力。 SimpleBatchingStrategy 发送策略满足以下规则会进行发送: ba…

梅大(龙)高速周边地形

最近广东高速的事故很受关注,我下载了这个高速的地形数据。查看了一下高速周围的地形情况。确实地形很险要,开车还是不要太快!尤其南方的路基不稳!这样险要的地形很危险! 高速周围的地形情况 梅大(龙&…

eNSP-动态路由(ospf协议)

一、拓扑结构搭建 二、主机配置 pc1 pc2 三、路由器配置 1.AR2配置 <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入接口 [Huawei-GigabitEthernet0/0/0]ip address 192.168.0.2 24 #设置ip地址 [Huawei-GigabitEthernet0/0/0]q #返回上一级 [Huawei]int g0/0/1 …

关于 Vue.js 双向数据绑定基本实现认知

写在前面 很早的一篇博客&#xff0c;整理了部分&#xff0c;蹭假期整理完博文内容涉及:双向数据绑定 实现方式简单介绍基于发布订阅、数据劫持的双向数据绑定两种不同实现(ES5/ES6) Demo&#xff0c;以及代码简单分析Object.defineProperty && Proxy API 介绍以及特性…

Libcity笔记:原子文件

1 介绍 Libcity中的数据以原子文件的形式存在 2 原子文件类别 对于不同的交通预测任务&#xff0c;可能用到不同的原子文件&#xff0c;同一个数据集不一定包含全部六种原子文件 网格数据需要按照先行后列的顺序遍历OD数据需要按照先起点后终点的顺序遍历 2.1 geo 存储地理…

opengauss概述-基础知识篇-备考华为高斯

目录 &#x1f9e8;考前准备: &#x1f3a1;数据库操作语言 ✨OLTP和OLAP &#x1f3af;常用函数 &#x1f9f2;字符处理函数 关于 left 和 right 特别重点的字符串函数 &#x1f9f2;数字操作函数 关于 ceil 和 floor &#x1f9f2;时间和日期处理函数 &#x1f9f…

专项技能训练五《云计算网络技术与应用》实训7-1:安装mininet

文章目录 mininet安装1. 按6-1教程安装opendaylight控制器。2. 按6-2教程安装RYU控制器。3. 按5-1教程安装openvswitch虚拟交换机并开启服务。4. 将老师所给mininet安装包试用winSCP传送至电脑端。5. 安装net-tools。6. 安装mininet7. 安装完成后&#xff0c;使用命令建立拓扑&…

【网络安全产品】---应用防火墙(WAF)

what Web应用防火墙&#xff08;Web Application Firewall) WAF可对网站或者App的业务流量进行恶意特征识别及防护&#xff0c;在对流量清洗和过滤后&#xff0c;将正常、安全的流量返回给服务器&#xff0c;避免网站服务器被恶意入侵导致性能异常等问题&#xff0c;从而保障…

快速了解Django:核心概念解析与实践指南

title: 快速了解Django&#xff1a;核心概念解析与实践指南 date: 2024/5/1 20:31:41 updated: 2024/5/1 20:31:41 categories: 后端开发 tags: Django核心路由系统视图系统ORM管理中间件Web框架登录装饰器 第一章&#xff1a;Django简介 背景和发展历程&#xff1a; Djan…

计算机毕业设计springboot基于vue电商抢购限时秒杀系统ch0h8

技术栈 ide工具&#xff1a;IDEA 或者eclipse 编程语言: java 数据库: mysql5.7以上版本 可选框架&#xff1a;ssmspringboot都有的 前端&#xff1a;vue.jsElementUI 详细技术&#xff1a;springbootSSMvueMYSQLMAVEN 数据库工具&#xff1a;Navicat/SQLyog都可以 开发工具 Ec…

【算法设计与分析】六、动态规划:(二)上机-1、地牢逃生【理论到程序】

文章目录 一、题目1、问题2、输入输出要求3、样例说明4、数据范围 二、思路1、GPT4 - fail算法解释C 实现 2、Claude3 - fail问题分析算法实现 3、个人拙见 - succeed 三、代码实现 一、题目 1、问题 用一个 nn 的矩阵表示一座地牢&#xff0c;矩阵中第 i 行第 j 列的方格的值…

力扣每日一题106:从中序与后序遍历序列构造二叉树

题目 中等 相关标签 相关企业 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postorder …

OpenCV(五) —— 人脸识别模型训练与 Windows 下的人脸识别

本文主要内容&#xff1a; 如何训练 OpenCV 的人脸识别模型如何在 Windows 下利用 OpenCV 进行人脸识别 1、概述 人脸识别需要人脸模型&#xff08;特征集合&#xff09;的支持&#xff0c;人脸定位的速度与准确度取决于模型。 OpenCV 提供了已经训练好的模型&#xff0c;无…

KAN网络认识

首先&#xff0c;这是一个基于柯尔莫哥洛夫-阿诺德表示定理的网络。这个定理指出如果函数f是定义在有界域上的多变量连续函数&#xff08;即最终要拟合的非线性函数是连续的&#xff09;&#xff0c;那么该函数就可以表示为多个单变量、加法连续函数的有线组合。 对于机器学习…

大数据BI可视化(Echarts组件)项目开发-熟悉交互API5.0

全局echarts对象 init初始化 registerTheme注册主题 var mCharts echarts.init(document.querySelector("div"), itcast)registerMap地图图表 connect 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8&qu…

OpenCV(六) —— Android 下的人脸识别

本篇我们来介绍在 Android 下如何实现人脸识别。 上一篇我们介绍了如何在 Windows 下通过 OpenCV 实现人脸识别&#xff0c;实际上&#xff0c;在 Android 下的实现的核心原理是非常相似的&#xff0c;因为 OpenCV 部分的代码改动不大&#xff0c;绝大部分代码可以直接移植到 …

ubuntu安装LVGL/lv_img_conv并在thinkphp中进行调用生成bin文件

项目需求&#xff1a;需要处理图片成为bin文件&#xff0c;并以二进制的方式传给蓝牙设备&#xff0c;当前仅介绍如何安装&#xff0c;对lvgl功能和简介不做过多描述 项目库地址&#xff1a;https://github.com/lvgl/lv_img_conv 安装过程比较简单 一&#xff0c;确保node.j…

mall-cook本地部署运行

下载源代码 https://github.com/wangyuan389/mall-cook 下载好之后解压&#xff0c;删除.github和yarn.lock&#xff0c;因为使用pnpm 启动文档部署 切换到packages\mall-cook-document&#xff0c;删除yarn.lock&#xff0c;安装依赖包pnpm install 执行pnpm dev启动文档…

C语言/数据结构——(用双链表实现数据的增删查改)

一.前言 嗨嗨嗨&#xff0c;大家好久不见&#xff01;前面我们已经通过数组实现数据的增删查改、单链表实现数据的增删查改&#xff0c;现在让我们尝试一下使用双链表实现数据的增删查改吧&#xff01; 二.正文 如同往常一样&#xff0c;对于稍微大点的项目来说&#xff0c;…

推荐网站(2)今日热榜合集,看不同软件的热点事件

当我们想要看微博&#xff0c;今日头条&#xff0c;bilibili等等今日热点时&#xff0c;需要打开对应的app查看&#xff0c;但是有了这个网站我们可以看不同平台的热点消息&#xff0c;甚至京东&#xff0c;淘宝等购物软件&#xff0c;也能看到热销总榜。 链接直达&#xff1a;…