当前位置:

首页 > 编程开发 > Java类和对象的定义与使用小结

Java类和对象的定义与使用小结

Java是纯面向对象语言,类作为模板描述对象的属性和行为,通过实例化创建对象。this引用区分成员变量与局部变量,构造方法在创建对象时自动调用且仅一次,支持重载与默认初始化。

本文目录

    一.是面向对象

    1.1什么是面向对象

    Ja va是一门纯面向对象的语言。在面向对象的世界里,一切皆对象。你可以把面向对象理解为一种解题思路——核心在于通过对象之间的协作来完成任务,而不是靠某个单一的流程硬推。

    Ja va类和对象的定义与使用小结

    1.2面向对面向过程:

    不妨拿洗衣服这件事来对比一下:

    面向过程:

    拿衣服 → 放盆里 → 加水 → 加洗衣粉 → 搓洗 → 晾干

    面向对象:

    找洗衣机 → 放衣服 → 按按钮 → 等待 → 晾干

    面向对象的思路是把复杂问题拆分成多个对象,每个对象只负责自己那一摊事。你不需要知道洗衣机内部怎么转的,会用就行——这就是封装的魅力。

    二.类和对象的定义和使用

    2.1认识类(class)

    类是用来描述一个实体(对象)的模板,主要说明这个实体有哪些属性(特征)和哪些功能(行为)。描述清楚了,计算机才能识别它。

    举个简单的例子:学生就是一个类,它有属性(年龄、性别),也有行为(学习、运动)。

    //定义一个学生类
     class Student{
         //类的属性
        int age;//年龄
        String name;//名字
    }

    class 是定义类的关键字,Student 是类名,花括号里是类的主体。类里包含的内容统称“类的成员”,其中属性用来描述特征,方法用来描述功能。

    下面再拿洗衣机举一个完整的例子:

    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("定时功能");
        }
    }

    注意事项

    :

    1. 一般一个文件里只定义一个类。

    2. main方法所在的类通常要用 public 修饰(Eclipse 默认会在 public 修饰的类中找 main 方法)。

    3. public 修饰的类名必须和文件名保持一致。

    4. 不要随意修改 public 修饰的类名,如果确实需要改,请通过开发工具操作。

    2.2认识对象

    对象(Object) 是类的具体实例。用类类型创建对象的过程,称为类的实例化。

    好比张三、李四都是“学生类”的对象——张三是一个,李四是另一个。

    public class Test {
        public static void main(String[] args) {
            // 创建对象
            Student s1 = new Student();
            s1.name = "张三";
            s1.age = 18;
            s1.study();  // 张三正在学习
            Student s2 = new Student();
            s2.name = "李四";
            s2.age = 17;
            s2.study();  // 李四正在学习
        }
    }

    注意事项

    :

    new 关键字用来创建一个对象的实例。

    使用 . 来访问对象中的属性和方法。

    同一个类可以创建多个实例。

    2.3类和对象的关系

    类是模板,是蓝图;对象是实体,是施工成果。

    类实例化出对象,就像用建筑设计图建造出真实的房子。设计图上标明了需要什么材料、什么结构,但并没有实体建筑存在。类只是一个设计,只有实例化出对象,才能真正存储数据、占用物理空间。

    三.this引用

    3.1this引用的作用

    this 代表当前对象的引用,主要用来区分成员变量和局部变量——当参数名和成员变量重名时,this 就是那个“我自己”的标识。

    class Person {
        // 成员变量
        String name;
        int age;
        // 构造方法:参数名和成员变量重名了!
        public Person(String name, int age) {
            // this.name = 自己的name
            this.name = name;
            // this.age = 自己的age
            this.age = age;
        }
        public void showInfo() {
            System.out.println("姓名:" + this.name);
            System.out.println("年龄:" + this.age);
        }
    }
    public class Test {
        public static void main(String[] args) {
            Person p = new Person("小明", 20);
            p.showInfo();
        }
    }

    3.2 this引用的特性

    1. this 的类型就是对应类的引用类型——哪个对象调用它,它就是哪个对象的引用。

    2. this 只能在成员方法中使用。

    3. 在成员方法中,this 只能引用当前对象,不能转而引用其他对象。

    四.构造方法

    4.1什么是构造方法

    构造方法(也称构造器)是一个特殊的成员方法,它的名字必须与类名相同。在创建对象时,编译器会自动调用它,并且在整个对象的生命周期内只调用一次——就像人的出生,每个人只能出生一次。

    class Dog{
        String name;
        int age;
        //带参数构造
        public Dog(String name,int age){
            this.name = name;
            this.age = age;
        }
        public void info(){
            System.out.println(name+","+age+"岁");
        }
    }
    public class TestDog{
        public static void main(String[] args) {
            //创建对象时传参
            Dog d = new Dog("旺财",3);
            d.info();
        }
    }

    4.2构造的特性

    1. 名字必须与类名相同。

    2. 没有返回值类型,设置成 void 也不行。

    3. 创建对象时由编译器自动调用,且只调用一次。

    4. 构造方法可以重载——根据需求提供不同参数的构造方法。

    4.3默认初始化

    public class DefaultValueDemo {
        // 8种基本类型 + 引用类型,全都没有手动赋值
        byte b;
        short s;
        int i;
        long l;
        float f;
        double d;
        char ch;
        boolean bool;
        String str;
        // 构造方法:创建对象时自动打印所有默认值
        public DefaultValueDemo() {
            System.out.println("byte   默认值:" + b);
            System.out.println("short  默认值:" + s);
            System.out.println("int    默认值:" + i);
            System.out.println("long   默认值:" + l);
            System.out.println("float  默认值:" + f);
            System.out.println("double 默认值:" + d);
            System.out.println("char   默认值:[" + ch + "]");
            System.out.println("boolean默认值:" + bool);
            System.out.println("String 默认值:" + str);
        }
        public static void main(String[] args) {
            // 创建对象 → 自动调用构造 → 一次性输出所有未初始化的值
            new DefaultValueDemo();
        }
    }
    //运行结果
    //byte   默认值:0
    //short  默认值:0
    //int    默认值:0
    //long   默认值:0
    //float  默认值:0.0
    //double 默认值:0.0
    //char   默认值:[]
    //boolean默认值:false
    //reference 默认值:null
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    如何在Visual Studio2022查看变量监视窗口调试程序
    如何在Visual Studio2022查看变量监视窗口调试程序

    详解 Visual Studio 2022 调试技巧:包括断点设置、监视窗口开启方法、变量添加步骤以及通过 F10 单步执行观察变量值变化的全过程。

    Visual Studio2017设置默认编码为UTF-8不带BOM
    Visual Studio2017设置默认编码为UTF-8不带BOM

    针对 Visual Studio 2017 缺乏全局默认编码选项的情况,详解如何利用 .editorconfig 设定项目级 UTF-8 无 BOM 规则,以及手动转换现有文件并校验字节的方法。

    Visual Studio2022F5调试提示启动项目未配置怎么修复
    Visual Studio2022F5调试提示启动项目未配置怎么修复

    解决 Visual Studio 2022 F5 调试报错问题,通过设置启动项目、检查解决方案属性及正确区分类库与应用项目,快速恢复调试功能。

    Visual Studio2022NuGet包还原失败离线处理方案
    Visual Studio2022NuGet包还原失败离线处理方案

    解决Visual Studio 2022离线环境中NuGet包还原失败的难题,涵盖依赖链分析、本地源配置、包集收集及隔离验证步骤,帮助开发者构建稳定的离线开发环境。

    Visual Studio2017大项目加载缓慢,优化加载性能技巧
    Visual Studio2017大项目加载缓慢,优化加载性能技巧

    解决Visual Studio 2017大型项目加载慢的实用指南。涵盖性能监测、扩展管理、文档恢复优化及版本兼容性检查,帮助开发者精准定位瓶颈并提升工作效率。

    Visual Studio2022设置多启动项目同时调试运行
    Visual Studio2022设置多启动项目同时调试运行

    详解 Visual Studio 2022 多启动项目配置方法,包括启动动作选择、顺序调整及调试技巧,帮助开发者高效调试分布式或前后端分离应用。

    fastapi下载文件接口实现教程
    fastapi下载文件接口实现教程

    深入解析在FastAPI框架中实现文件下载接口的完整方案,涵盖基于FileResponse的本地静态文件传输、基于StreamingResponse的分块流式传输、RFC 5987中文文件名编码规范、路径穿越安全防御及BackgroundTasks临时文件清理,并配备详细代码示例与架构解析图。

    码上飞 codeflying 平台功能介绍
    码上飞 codeflying 平台功能介绍

    了解码上飞CodeFlying如何利用自然语言生成应用。通过物品借用登记实例,学习需求解析、代码生成、测试优化及对话修改的核心操作流程。

    React页面刷新数据丢失怎么解决及状态保持方法
    React页面刷新数据丢失怎么解决及状态保持方法

    深入解析React页面刷新导致数据丢失的根本原因,系统介绍基于Web Storage、URL查询参数、状态库持久化插件以及服务端同步的具体解决步骤与选型实践。

    codex怎么配置开发环境教程项目配置完整步骤
    codex怎么配置开发环境教程项目配置完整步骤

    详解Codex开发环境配置流程,涵盖API密钥获取与安全存储、Python与Node.js项目集成代码示例、以及VS Code等IDE的插件配置技巧,帮助开发者构建高效的AI辅助编程工作流。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。