【JAVASE】类与对象 上

简介: 【JAVASE】类与对象

1. 面向对象


1.1 什么是面向对象

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。


面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。 用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。


1.2 面向对象与面向过程

举个例子说明一下:


传统的洗衣方式,需要我们亲力亲为,准备一盆水 --> 放衣服 --> 放洗衣粉 --> 洗衣服 --> 换水 --> 拧干 --> 晾衣服,过程很多,少了一个环节可能都不行。


如果按照该种方式来写代码,将来扩展或者维护起来会比较麻烦。


现代洗衣方式以面向对象方式来进行处理,就不关注洗衣服的过程。

具体洗衣机是怎么来洗衣服,如何来甩干的,用户不用去关心,只需要将衣服放进洗衣机,倒入洗衣粉,启动开关即可,通过对象之间的交互来完成的。


🍩面向过程和面相对象并不是一门语言,而是解决问题的方法,没有那个好坏之分,都有其专门的应用场景


2. 类的定义与使用


2.1 简单认识类

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


比如:洗衣机,它是一个品牌,在Java中可以将其看成是一个类别。

属性:产品品牌,型号,产品重量,外观尺寸,颜色…

功能:洗衣,烘干、定时…


在Java语言中,如何对上述的洗衣机类来进行定义呢?


2.2 类的定义格式

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

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

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


类中包含的内容称为类的成员。

属性主要是用来描述类的,称之为类的成员属性或者类成员变量。

方法主要说明类具有哪些功能,称为类的成员方法。


class WashMachine{
    public String brand; // 品牌
    public String type; // 型号
    public double weight; // 重量
    public double length; // 长
    public double width; // 宽
    public double height; // 高
    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 的基础上计算机就可以识别了。


注:


  • 类名注意采用大驼峰定义
  • 成员前写法统一为public
  • 此处写的方法不带 static 关键字

实例:定义一个 小狗 类

80dca79ec4e0199b1d522b68b3eccbf1_86424fe0148f4d7590faa898ae68e1ed.png


class PetDog {
  public String name;//名字
  public String color;//颜色
  // 狗的属性
  public void barks() {
  System.out.println(name + ": 旺旺旺~~~");
  }
  // 狗的行为
  public void wag() {
  System.out.println(name + ": 摇尾巴~~~");
  }
}

实例2:定义一个 学生 类


65f25fe02f30c9c517f90cc6c9f4e2fc_64c6013dfcb1487281031b8118154ae5.png


public class Student{
  //属性
  public String name;//姓名
  public String gender;//性别
  public short age;//年龄
  public double score;//学分
  //方法
  public void DoClass(){}//上课
  public void DoHomework(){}//写作业
  public void Exam(){}//考试
}

注:


  • 一般一个文件当中只定义一个类
  • main 方法所在的类一般要使用 public 修饰(注意:Eclipse默认会在 public 修饰的类中找 main 方法)
  • public 修饰的类必须要和文件名相同
  • 不要轻易去修改 public 修饰的类的名称


3. 类的实例化


3.1 什么是实例化


定义了一个类,就相当于在计算机中定义了一种新的类型,与 int,double 类似,只不过 int 和 double 是 java 语言自带的内置类型,而类是用户自定义了一个新的类型,比如上述的: PetDog 类和 Student 类。

它们都是类(一种新定义的类型)有了这些自定义的类型之后,就可以使用这些类来定义实例(或者称为对象)。


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


67ef7c86d14dc2d1c5640f1cebc74629_0a40c550063d455fa8d5336e51284556.png


public class oop {
        public static void main(String[] args) {
            PetDog dogh = new PetDog(); //通过new实例化对象
            dogh.name = "Jack";
            dogh.color = "黑色";
            dogh.barks();
            dogh.wag();
            PetDog dogs = new PetDog();
            dogs.name = "Peter";
            dogs.color = "棕色";
            dogs.barks();
            dogs.wag();
        }
}
class PetDog {
    // 狗的属性
    public String name;//名字
    public String color;//颜色
    //狗的行为
    public void barks() {
        System.out.println(name + ": 旺旺旺~~~");
    }
    public void wag() {
        System.out.println(name + ": 摇尾巴~~~");
    }
}

🍤 运行结果:

8fe3095e44cc1368e44dfdbb356a3633_cb7d6d650bed4e9cb335da1d041dab8a.png


注:


  • new 关键字用于创建一个对象的实例
  • 使用 . 来访问对象中的属性和方法
  • 同一个类可以创建对个实例


3.2 类和对象说明


  • 类只是一个模型一样的东西,用来对一个实体进行描述,限定了类有哪些成员
  • 类是一种自定义的类型,可以用来定义变量
  • 一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量
  • 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间

相关文章
|
监控 机器人 区块链
深度分析——狩猎者defi夹子机器人系统开发技术原理
过去一年的时间里,DeFi可谓是迅速崛起,发展态势极其迅猛。虽然DeFi尚处于发展早期阶段,但活跃度和参与度都呈指数地在增长。在DeFi中,交易被打包的顺序极大地影响了DeFi的经济利益。例如,在 UniSwap 中,同样两个针对某交易对的买单,先被执行的交易将获得更多代币。若你在一笔买单前买入同样的代币,然后又赶紧卖出,则将毫无风险的获利。
深度分析——狩猎者defi夹子机器人系统开发技术原理
|
7天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
6天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
325 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
|
18天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1331 8
|
5天前
|
监控 JavaScript Java
基于大模型技术的反欺诈知识问答系统
随着互联网与金融科技发展,网络欺诈频发,构建高效反欺诈平台成为迫切需求。本文基于Java、Vue.js、Spring Boot与MySQL技术,设计实现集欺诈识别、宣传教育、用户互动于一体的反欺诈系统,提升公众防范意识,助力企业合规与用户权益保护。
|
17天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1412 87
|
6天前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
315 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
|
5天前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。