2.1. 类与对象

news2024/11/6 9:38:37

在 Java 中,类和对象是面向对象编程的基本构建块。类是一种模板,用于定义对象的属性和行为。对象是类的实例,具有类定义的属性和行为。

2.1.1. 类的定义

要定义一个类,可以使用以下语法:

class ClassName {
    // 成员变量(属性)
    // 成员方法(行为)
}

类的名称应遵循驼峰命名法,首字母大写。类可以包含成员变量(属性)和成员方法(行为)。

示例1:定义一个简单的类

class Dog {
    // 成员变量
    String breed;
    int age;
    String color;

    // 成员方法
    void bark() {
        System.out.println("Woof!");
    }

    void sleep() {
        System.out.println("Zzz...");
    }

    void play() {
        System.out.println("Playing...");
    }
}

上述示例中,定义了一个名为 Dog 的类,包含三个成员变量(breedage 和 color)和三个成员方法(bark()sleep() 和 play())。

2.1.2. 创建和使用对象

创建一个对象,需要使用 new 关键字和构造方法。构造方法是一种特殊的成员方法,用于初始化对象的属性。构造方法的名称与类名相同,没有返回类型。

ClassName objectName = new ClassName();

要访问对象的属性和方法,可以使用点(.)操作符。

objectName.property;
objectName.method();

示例2:创建和使用对象

class Main {
    public static void main(String[] args) {
        // 创建 Dog 对象
        Dog myDog = new Dog();

        // 设置属性值
        myDog.breed = "Golden Retriever";
        myDog.age = 3;
        myDog.color = "Yellow";

        // 调用方法
        myDog.bark();
        myDog.sleep();
        myDog.play();

        System.out.println("My dog is a " + myDog.breed + " and its color is " + myDog.color + ".");
    }
}

2.1.3. 构造方法和 this 关键字

构造方法用于初始化对象。可以为类定义多个构造方法,它们具有不同的参数列表。这称为构造方法重载。

this 关键字用于引用当前对象。在构造方法中,可以使用 this 关键字区分参数和成员变量。

示例3:构造方法和 this 关键字

class Dog {
    // 成员变量
    String breed;
    int age;
    String color;

    // 构造方法
    Dog(String breed, int age, String color) {
        this.breed = breed;
        this.age = age;
        this.color = color;
    }

    // 成员方法
    void bark() {
        System.out.println("Woof!");
    }

    void sleep() {
        System.out.println("Zzz...");
    }

    void play() {
        System.out.println("Playing...");
    }
}

class Main {
    public static void main(String[] args) {
        // 使用构造方法创建 Dog 对象
        Dog myDog = new Dog("Golden Retriever", 3, "Yellow");

        // 调用方法
        myDog.bark();
        myDog.sleep();
        myDog.play();

        System.out.println("My dog is a " + myDog.breed + " and its color is " + myDog.color + ".");
    }
}

2.1.4. 封装

封装是一种将数据和操作数据的方法捆绑在一起的技术。为了实现封装,可以使用访问修饰符限制对类成员的访问。Java 提供了四种访问修饰符:publicprotectedprivate 和默认(无修饰符)。

通常,类的成员变量设置为 private,并通过公共的 getter 和 setter 方法访问和修改它们。

示例4:封装

    // 私有成员变量
    private String breed;
    private int age;
    private String color;

    // 构造方法
    Dog(String breed, int age, String color) {
        this.breed = breed;
        this.age = age;
        this.color = color;
    }

    // 公共 getter 和 setter 方法
    public String getBreed() {
        return breed;
    }

    public void setBreed(String breed) {
        this.breed = breed;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    // 成员方法
    void bark() {
        System.out.println("Woof!");
    }

    void sleep() {
        System.out.println("Zzz...");
    }

    void play() {
        System.out.println("Playing...");
    }
}

class Main {
    public static void main(String[] args) {
        // 使用构造方法创建 Dog 对象
        Dog myDog = new Dog("Golden Retriever", 3, "Yellow");

        // 使用 setter 方法设置属性
        myDog.setBreed("Labrador");
        myDog.setAge(4);
        myDog.setColor("Black");

        // 使用 getter 方法获取属性
        System.out.println("My dog is a " + myDog.getBreed() + " and its color is " + myDog.getColor() + ".");

        // 调用方法
        myDog.bark();
        myDog.sleep();
        myDog.play();
    }
}

通过这些示例,你应该对类和对象有了基本的了解。当然,类和对象在实际编程中的应用远比这里介绍的更复杂。但是,这些基本概念和操作是你开始学习和掌握面向对象编程的基础。

file

file

推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

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

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

相关文章

Java学习路线(17)——日志框架

一、日志技术概述 (1)概念: 日志是一种将系统运行信息封装至文件的一种记录载体。 (2)优势: 输出语句日志技术输出位置只能是控制台文件或数据库取消日志需要修改代码达成无需修改代码多线程性能较差性能较…

AcrelEMS企业微电网能效管理系统-强化电力需求侧管理,缓解电力系统峰值压力

摘要 近年来全国用电负荷特别是居民用电负荷的快速增长,全国范围内夏季、冬季用电负荷“双峰”特征日益突出,极端气候现象多发增加了电力安全供应的压力。具有随机性、波动性、间歇性特征的可再生能源大规模接入电网对电力系统的稳定性带来新的挑战&…

财务共享服务中心建设流程是什么样的?

财务共享是当今众多企业在数智化转型道路上的首选模式,财务共享服务中心由于具备“标准化、流程化、资源共享、信息化”的特点,一改传统财务分散的运作模式,将资源集中共享,大大提升了财务管理效率,也为企业管理打下良…

Loki安装使用方式

Distributor 收到 HTTP 请求,用于存储流数据 通过 hash 环对数据流进行 hash Distributor将数据流发送到对应的Ingester及其副本上 Ingester 新建 Chunk 或将数据追加到已有Chunk 上 Distributor通过 HTTP连接发送响应信息 Loki 日志系统由以下3个部分组成&#xf…

每日一题——删除字符串中的所有相邻重复项

每日一题 删除字符串中的所有相邻重复项 题目链接 思路 这是一道用栈解决的典型题目 我们先来看看栈的基本性质: 栈:是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素的操作。进行数据插入和删除操作的一端称为栈顶&#xff0c…

解决Github上传或者下载时失败的问题

总是出现push不到GitHub的问题, 这里来记录一下每次的解决方法 文章目录 2023年05月28日出现问题2023年05月28日再次出现问题2023年05月29日出现问题 2023年05月28日出现问题 push代码时出现如下图所示的错误 Failed to connect to 127.0.0.1 port 1080 after 2052 ms: Conne…

08.Stack和Queue

栈:先进后出 队列:先进先出 JVM的栈就是平常所说的一块内存。 此处所说的栈是数据结构 1. 栈(Stack) 1.1 概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶&…

迪赛智慧数——柱状图(基本柱状图):全国美食类门店TOP10地区

效果图 中国“最会吃”的省份,广东榜上有名,看看有你的家乡吗? 广东美食门店开店数量保持较好状态,重庆、上海、北京、天津开店率在5%以上。广东拥有众多的美食文化,美食门店数量也是全国最多的省份有99万家美食门店&#xff0c…

SpringBoot SSE服务端主动推送事件详解

一、SSE概述 1、SSE简介 SSE(Server Sent Event),直译为服务器发送事件,也就是服务器主动发送事件,客户端可以获取到服务器发送的事件。 我们常见的 http 交互方式是客户端发起请求,服务端响应,然后一次请求完毕。但是…

Centos 7安装python 3.9.10

概述 Python是一种高级编程语言,它具有简单易学、可读性强、代码简洁等特点。Python由Guido van Rossum于1991年创造,最初被用作一种教学语言,但现在已经成为一种通用的编程语言。 Python支持多种编程范式,包括面向对象编程、函数…

如何运用R语言进行Meta分析在【文献计量分析、贝叶斯、机器学习等】多技术的融合

Meta分析是针对某一科研问题,根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法,对来源不同的研究成果进行收集、合并及定量统计分析的方法,最早出现于“循证医学”,现已广泛应用于农林生态,资源环境等方面。…

【MySQL】MySql的底层数据结构

文章目录 前言索引结构及查找算法不适合做MySql的数据结构及其原因 一、BTree和BTree的引出1.1 BTree数据结构2.2 BTree数据结构 二、计算m阶,即BTree该取多少合适总结 前言 索引结构及查找算法 一个sql语句在mysql里究竟是如何运行的呢?又是怎么去查找…

如何在Linux系统中使用SCP命令传输文件和文件夹?

在Linux系统中,SCP(Secure Copy)是一种用于在本地和远程主机之间安全传输文件和文件夹的命令行工具。它基于SSH协议,并提供了加密和身份验证机制,确保数据的安全性和完整性。 本文将详细介绍如何使用SCP命令在Linux系统…

如何通过pytest进行更改自动化测试用例的执行顺序?

前言 在自动化测试中,自动化测试用例设计原则就是执行过程时不能存在依赖顺序,那么如果测试用例需要按照指定顺序执行,这个时候应该怎么做呢?目前单元测试框架中unittest没有办法改变测试用例的执行顺序,但是另一个单…

北京发布Web3.0白皮书!币圈扬言:国际金融格局即将重塑!

如今,虚拟资产已成为香港数字经济与金融创新的“桥头堡”。随着加密新政生效在即,市场暗流涌动,头部交易所争相布局,香港或将迎来新一轮的加密竞争。 多家交易所进军香港 5月28日,欧易(OKX)完成…

浅谈兼容性测试点和注意项

一:兼容性测试的概念:就是验证开发出来的程序在特定的运行环境中与特定的软件、硬件或数据相组合是否能正常运行、有无异常的测试过程。 二:兼容性测试的分类: (1)浏览器兼容性测试 指的是在浏览器上检…

one-stage目标检测方法

YOLO系列算法 从区域推荐到端到端 RCNN系列的方法和核心思想在于:先找出可能存在物体的区域,再确认物体的存在 这种思路归根溯源,来自传统的目标检测算法。 为了解决传统方法中的滑动窗口的方式,来找出可能存在目标的区域&…

自学软件测试到什么程度才可以去找工作...拿到阿里offer后才知道有这些就够了!!

如果是纯自学,建议先自学软件测试基础、功能测试等,然后找一个相关的工作,在工作中,边增长项目经验,边自学更难一点的自动化编程、性能测试等。自动化测试、性能测试如果没有老师带,自学的难度比较大&#…

uniapp 使用自定义icon图标

1.下载图标文件 阿里图标库位置:iconfont-阿里巴巴矢量图标库 eg: 搜索 “书签” 图标,点击加入购物车,再进入购物车,填写加入项目,也可以直接下载,点击编辑 编辑可以设置图片颜色,或像素大小…

immutable深拷贝:数据多层属性-不可变数据结构

一、为何要用immutable深拷贝? 1.浅拷贝(浅复制) //引用赋值-浅复制、浅拷贝 var obj{name:"溜溜球"}var obj2obj;obj2.name"刘刘球";console.log(obj);//name:"刘刘球"console.log(obj2);//name:"刘刘…