java类和对象详解(1)

news2024/9/25 3:20:52

 

面向对象的初步认知

什么是面向对象

Java是一门纯面向对象的语言(Object Oriented Program, 简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。

用面向对象的思想来涉及程序,更符合人们对于事物的认知,对于大型的程序设计,扩展和维护都非常友好。 (核心:找对象->面向对象->使用对象)。

面向对象和面向过程

面向对象和面向过程都是用来组织和处理程序中的数据和功能的方法,它们之间的主要区别在于如何组织和管理代码 🌟

  1. 面向对象(Object-Oriented):

    • 面向对象编程将问题分解成一系列的对象,每个对象都是一个独立的实体,具有自己的属性和方法,对象之间通过交互来完成任务😺
    • 程序中的数据和功能被封装在对象中,使代码更加模块化、灵活和易于维护💡
    • 面向对象编程强调代码的重用性,可以通过继承和多态等特性,使得代码更加可扩展🌈
    • Java、Python、C++等编程语言都支持面向对象编程🐾
    • 面向过程可以看作人用洗衣机洗衣服的过程,总共有四个对象:人,水,衣服,洗衣机。整个过程主要是这四个对象之间交互完成的,人不需要关心洗衣机是如何洗衣服的,是如何甩干的。
  2. 面向过程(Procedural-Oriented):

    • 面向过程编程将问题分解成一系列的过程(函数),每个过程执行特定的功能喵~ 程序按照过程的顺序依次执行😺
    • 程序中的数据和功能被分散在各个过程中,代码可能较为冗长和重复,不太容易维护和扩展💦
    • 面向过程编程比较直观和简单,适用于一些简单的任务和算法实现🐾
    • C语言通常被认为是面向过程编程的代表🐾
    • 面向对象可以看作传统人手洗衣服的过程,要经过许多流程才能洗好衣服,少了任何一个环节都不行。

在实际编程中,我们可以根据问题的复杂程度和需求选择合适的编程范式🌸

类定义和使用

类的简单认识

类是用来对一个实体(对象)来进行描述的主要描述该实体(对象)具有哪些属性(外观?),哪些功能(干什么?),描述完成之后计算机就可以识别了。

比如:洗衣机,它是一个品牌,在java当中可以看作为一个类别。

属性:产品品牌,型号,质量,颜色,尺寸等。

功能:洗衣,烘干,除菌等。

类的定义格式

在java中定义类时需要用到class关键字,具体语法如下:

//创建类
class ClassName{
    field; //字段(属性)或者成员变量
    method;//行为或者成员方法
}

class为定义类的关键字,ClassName为类的名字,{}为类中的主体。

类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类的成员变量。方法主要用来说明类具有哪些功能,成为类的成员方法。

在之后,我们会学到类中包含的五种东西:1.成员变量,2.成员方法,3.构造器,4.代码块,5.内部类。

例:构建一个洗衣机类

public class WashMachine {
    public String bread;//品牌
    public String type;//型号
    public double weight;//重量
    public double length;//长
    public double width;//宽
    public String color;//颜色
    
    public void washClothes(){//洗衣服
        System.out.println("洗衣功能");
    }
    public void dryClothes(){//脱水
        System.out.println("脱水功能");
    }
    public void setTime(){//定时
        System.out.println("定时功能");
    }
}

采用Java语言将洗衣机类在计算机中定义完成,经过javac编译之后形成.class文件(每个类都会形成一个字节码文件),在JVM的基础上计算机就可以识别了。

注意事项:

1.类名采用大驼峰定义

2.成员前写法统一为public,后面统一解释

3.此处写的方法不带static关键字,后面解释

4.建议一个类放在一个java文件夹中

5.main方法所在的类一般要用public修饰

6.public修饰的类必须要与文件名相同(因此不要轻易修改类的名称)

类的实例化

什么是实例化

定义了一个类,就相当于在计算机中定义了一个新的类型, 与int,double等类似,只不过它们是java语言自带的内置类型,而类是用户定义了一个新的类型,比如上述的洗衣机类。它们都是类(一种新的定义类型),有了这些定义类型后,就可以使用这些类来定义实例(或称对象)

用类类型创建对象的过程,称为类的实例化,在java中采用new关键字,配合类名来实例化对象。

public class test4 {
    public static void main(String[] args) {
        WashMachine wash1 = new WashMachine();//通过new来实例化对象
        wash1.brand = "牛逼牌";
        wash1.type = "XP180";
        wash1.washClothes();
        wash1.dryClothes();

        WashMachine wash2 = new WashMachine();//可以实例化多个对象
        wash2.brand = "王牌对王 牌";
        wash2.type = "XP150";
        wash2.washClothes();
        wash2.dryClothes();
    }
}

注意事项:

1.使用new关键字以创建一个对象的实例

2.使用. 来访问一个对象的属性和方法

3.同一个类中可创建多个实例(一个类实例化多个对象)

类和对象实例化的说明

1.类只是一个模具一样的东西,用于对一个实体进行描述,限定了类有哪些成员

2.类是一种自定义的类型,可以用来定义变量

3.一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量

4.打个比方,类实例化出的对象就像现实中使用建筑设计图建造出房子,类就像设计图,只管设计出需要什么东西,但没有实体化的建筑存在,同样类也是个设计,实例化出的对象才能存储实例化数据。

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

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

相关文章

AntdesignVue 时间设置为年份不回显问题解决

时间设置为年份回显时报如下错误 年份设置值后报value异常 解决方案 格式不一致导致的 moment格式化后是string类型,后台返回的是Number类型导致的,统一格式就会显示了

人工智能安全-3-噪声数据处理

0 提纲 噪声相关概述噪声处理的理论与方法基于数据清洗的噪声过滤主动式过滤噪声鲁棒模型1 噪声相关概述 噪声类型: 属性噪声:样本中某个属性的值存在噪声标签噪声:样本归属类别关于噪声分布的假设:均匀分布、高斯分布、泊松分布等。 标签噪声的产生原因: (1)特定类别…

Unity 引擎做残影效果——1、BakeMesh

Unity实现残影效果 大家好,我是阿赵。   这次来分享一下在Unity里面做残影的效果。   所谓的残影,就是在角色移动的过程中,留下一串残留的影子。 这种效果比较常出现在格斗游戏和动作游戏。   在Unity里面做残影,方法很多…

DSPM来袭!什么是数据安全态势管理

数据安全态势管理是一种保护云数据的方法,通过确保敏感数据始终具有正确的安全态势,无论其被复制或移动到何处。 那么,什么是DSPM?这是一个简单的例子: 假设您已经为云数据建立了出色的安全态势。在此示例中&#xf…

力扣 96. 不同的二叉搜索树

题目来源:https://leetcode.cn/problems/unique-binary-search-trees/description/ C题解:动归五部曲。 确定dp数组以及下标的含义。dp[i] : 1到i为节点组成的二叉搜索树的个数为dp[i]。确定递推公式。由于是二叉搜索树,我们可以…

vue实现 图片拖拽及鼠标滚轮放大缩小

效果&#xff1a; 代码实现 <template><div class"container"><divclass"image-container"mousewheel.stop"onMouseWheel"mousedown"onMouseDown"mousemove"onMouseMove"mouseleave"onMouseLeave&quo…

大文件传输的有效可用方式

如何传输大文件&#xff1f;大文件传输的方法有哪些&#xff1f;在互联网时代&#xff0c;速度就是效率。企业在生产过程中需要进行数据信息的交换、转移。这就涉及到大文件的传输。不同的行业都有大文件传输的需求。比如影视行业需要每天传输视频素材&#xff0c;一个视频可能…

第十三章 利用PCA简化数据

文章目录 第十三章 利用PCA简化数据13.1降维技术13.2PCA13.2.1移动坐标轴 13.2.2在NumPy中实现PCA13.3利用PCA对半导体制造数据降维 第十三章 利用PCA简化数据 PCA&#xff08;Principal Component Analysis&#xff0c;主成分分析&#xff09;是一种常用的降维技术&#xff0…

Error in v-on handler (Promise/async): “[object Object]“

解决方法&#xff1a;用try 和 catch 语句来处理 catch来接收try异常报错

Linux怎么设置软链接(ln命令)

在Linux中&#xff0c;软链接&#xff08;Symbolic Link&#xff09;&#xff0c;它可以指向另一个文件或目录。类似于Windows中的快捷方式。 主要作用&#xff1a;文件路径简化&#xff1a;通过创建软链接&#xff0c;可以将长而复杂的文件路径简化为一个易于记忆和使用的链接…

【大数据之Flume】四、Flume进阶之复制和多路复用、负载均衡和故障转移、聚合案例

1 复制和多路复用 &#xff08;1&#xff09;需求&#xff1a;使用 Flume-1 监控文件变动&#xff08;可以用Exec Source或Taildir Source&#xff09;&#xff0c;Flume-1 将变动内容传递给 Flume-2&#xff08;用Avro Sink传&#xff09;&#xff0c;&#xff08;用Avro Sou…

ES6基础知识九:你是怎么理解ES6中Module的?使用场景?

一、介绍 模块&#xff0c;&#xff08;Module&#xff09;&#xff0c;是能够单独命名并独立地完成一定功能的程序语句的集合&#xff08;即程序代码和数据结构的集合体&#xff09;。 两个基本的特征&#xff1a;外部特征和内部特征 外部特征是指模块跟外部环境联系的接口…

iMacros WebBrowser Component for .NET

iMacros WebBrowser Component for .NET 在几分钟内实现应用程序自动化 快速轻松地将iMacro集成到您的应用程序中。不需要单独的安装程序。 无缝集成 iMacros与您的.NET应用程序无缝集成&#xff0c;作为Microsoft WebBrowser控件的替代品。它甚至可以用作每个.NET应用程序中的…

C++报错 XX does not name a type;field `XX’ has incomplete type解决方案

C报错 XX does not name a type&#xff1b;field XX’ has incomplete type解决方案 两个C编译错误及解决办法–does not name a type和field XX’ has incomplete type 编译错误一&#xff1a;XX does not name a type 编译错误二&#xff1a;field XX’ has incomplete t…

【云原生】Serverless 技术架构分析

一、什么是Serverless? 1、Serverless技术简介 ​ Serverless&#xff08;无服务器架构&#xff09;指的是由开发者实现的服务端逻辑运行在无状态的计算容器中&#xff0c;它由事件触发&#xff0c; 完全被第三方管理&#xff0c;其业务层面的状态则被开发者使用的数据库和存…

【BASH】回顾与知识点梳理(五)

【BASH】回顾与知识点梳理 五 五. 数据流重导向5.1 什么是数据流重导向standard output 与 standard error output/dev/null 垃圾桶黑洞装置与特殊写法standard input &#xff1a; < 与 << 5.2 命令执行的判断依据&#xff1a; ; , &&, ||cmd ; cmd (不考虑指…

Android 从LibVLC-android到自编译ijkplayer播放H265 RTSP

概述 ijkplayer: Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support. 官方的描述就这么简单的一句话&#xff0c;但丝毫都不影响它的强大。 从LibVLC 到 ijkplayer 截止到2023.7.20 LibVLC-Android 最大的问题在与OOM&#xff0c;测试了…

多线程(JavaEE初阶系列6)

目录 前言&#xff1a; 1.什么是线程池 2.标准库中的线程池 3.实现线程池 结束语&#xff1a; 前言&#xff1a; 在上一节中小编带着大家了解了一下Java标准库中的定时器的使用方式并给大家实现了一下&#xff0c;那么这节中小编将分享一下多线程中的线程池。给大家讲解一…

威胁分析风险评估(TARA)影响和攻击可行性评估参考

在威胁分析风险评估&#xff08;TARA)过程中&#xff0c;风险等级由对资产安全属性侵害造成后果的影响等级和威胁的可能性两方面综合评估。 备注&#xff1a;以上内容的评估皆是建立在由信息安全问题引起并导致的前提下。 影响等级评估 影响等级说明&#xff0c;影响从安全&a…

k8s-服务发现service和ingress

回到目录 service用于集群内部应用的网络调用&#xff0c;处理东西流量 ingress用于集群外部用户访问内部服务&#xff0c;处理南北流量 一 kube-proxy三种代理模式 kubernetes集群中有三层网络&#xff0c;一类是真实存在的&#xff0c;例如Node Network、Pod Network,提供真…