Java 类和对象

Java 对象和类 Java 作为一种面向对象的编程语言,支持以下基本概念:1、类(Class):2、对象(Object):3、继承(Inheritance):4、封装(Encapsulation):5、多态(Polymorphism):6、抽象(Abstraction):7、接口(Interface):8、方法(Method):9、方法重载(Method Overloading): 阅读详情

         在 Java 编程中,类和对象是面向对象编程(OOP)的核心支柱。理解类与对象的本质、掌握它们的使用方法,是学好 Java 的关键一步。本文将结合实例,从面向对象思想出发,详细讲解类的定义、对象的创建、核心特性及实战技巧,帮助你彻底掌握这一基础且重要的知识点。

一、面向对象:编程思想的核心

1.1 什么是面向对象?

        Java 是一门纯面向对象的语言(Object Oriented Program, OOP),在面向对象的世界里,一切皆为对象。它是一种解决问题的思想,通过对象之间的交互完成任务,这种方式更符合人类对事物的认知规律,对于大型程序的设计、扩展和维护非常友好。

1.2 面向对象与面向过程的对比

  • 面向过程:关注完成任务的具体步骤。例如传统做饭,需要手动完成 “买菜、洗菜、切菜、开火、翻炒、调味” 等一系列步骤,每个步骤都不能省略,且不同菜品的步骤差异很大,扩展或修改起来很麻烦。
  • 面向对象:关注参与任务的对象及交互。现代做饭中,有 “人、食材、电饭煲、炒锅” 等对象,人只需将米和水放入电饭煲并启动,电饭煲会自动完成煮饭过程,无需关注其内部如何加热、保温,通过对象交互即可完成任务。

注意:两种思想没有绝对的好坏,面向过程适合简单场景,面向对象更适合复杂系统的开发。

二、类:对象的抽象描述

2.1 类的概念

        类是对现实实体(对象)的抽象描述,它定义了实体的属性(特征)和功能(行为)。例如 “电饭煲” 这一实体,属性包括品牌、容量、颜色等,功能包括煮饭、保温、定时等。通过类,计算机才能识别和处理现实世界的实体。

2.2 类的定义格式

        在 Java 中,使用 class 关键字定义类,语法如下:        

class 类名 {
    字段; //成员变量(属性)
    方法; //成员方法(功能)
}

示例:定义电饭煲类

class RiceCooker {
    //属性:品牌、容量、颜色、功率
    public String brand; 
    public double capacity; //单位:升
    public String color; 
    public int power; //单位:瓦
    
    //功能:煮饭、保温、定时
    public void cookRice() { 
        System.out.println(brand + "电饭煲开始煮饭");
    }
    public void keepWarm() { 
        System.out.println("进入保温模式");
    }
    public void setTimer(int minutes) { 
        System.out.println("定时" + minutes + "分钟后开始工作");
    }
}

定义规范:

  • 类名采用大驼峰命名法(如 RiceCooker);
  • 成员变量和方法前暂用 public 修饰(后续讲解权限控制);
  • 方法不要添加 static 关键字(非静态方法属于对象)。

三、对象:类的具体实例

3.1 对象的实例化

        类是抽象的 “设计图纸”,而对象是根据图纸创建的 “实体”。用类创建对象的过程称为实例化,在 Java 中通过 new 关键字实现。

示例:实例化电饭煲对象

public class Main {
    public static void main(String[] args) {
        //实例化电饭煲对象
        RiceCooker cooker = new RiceCooker();
        
        //给对象属性赋值
        cooker.brand = "美的";
        cooker.capacity = 5.0;
        cooker.color = "白色";
        cooker.power = 800;
        
        //调用对象方法
        cooker.setTimer(30); //输出:定时30分钟后开始工作
        cooker.cookRice(); //输出:美的电饭煲开始煮饭
        cooker.keepWarm(); //输出:进入保温模式
    }
}

3.2 类与对象的关系

  • 类是抽象模板,仅描述实体的属性和功能,不占用物理空间;
  • 对象是类的具体实例,存储实际的属性数据,占用物理空间;
  • 一个类可以实例化多个对象,就像一张图纸可以建造多栋房子。

四、this 引用:对象的自我指向

4.1 为什么需要 this?

        当方法的形参名与成员变量名相同时,会产生歧义。例如在设置图书信息时:

public void setBookInfo(String name, String author, double price) {
    name = name; //无法区分是给成员变量还是形参赋值
    author = author;
    price = price;
}

        此时需要 this 引用明确指向当前对象的成员变量。

4.2 this 的本质

  this 是成员方法中隐藏的第一个参数,指向调用该方法的对象。编译器会自动传递对象引用,无需手动处理。

示例:用 this 解决歧义

public class Book {
    public String name;
    public String author;
    public double price;
    
    public void setBookInfo(String name, String author, double price) {
        this.name = name; //this.name 指向对象的成员变量
        this.author = author;
        this.price = price;
    }
}

4.3 this 的特性

  • this 的类型与当前类一致;
  • 仅能在成员方法中使用;
  • 只能引用当前对象,不能引用其他对象;
  • 是方法隐藏的第一个参数,由编译器自动传递。

五、构造方法:对象的初始化器

5.1 构造方法的概念

        构造方法是一种特殊的成员方法,用于对象的初始化。它在创建对象时由编译器自动调用,且在对象的生命周期内仅调用一次。

语法特征:

  • 名字与类名完全相同;
  • 没有返回值类型(即使 void 也不能写);
  • 一般用 public 修饰。

示例:图书类的构造方法

public class Book {
    public String name;
    public String author;
    public double price;
    
    //构造方法
    public Book(String name, String author, double price) {
        this.name = name;
        this.author = author;
        this.price = price;
    }
    
    public static void main(String[] args) {
        //创建对象时自动调用构造方法
        Book book = new Book("Java编程思想", "Bruce Eckel", 108.0);
    }
}

5.2 构造方法的特性

  1. 重载特性:可定义多个参数不同的构造方法,满足不同初始化需求。

//无参构造方法
public Book() {
    this.name = "未知书名";
    this.author = "未知作者";
    this.price = 0.0;
}

//有参构造方法
public Book(String name, String author, double price) {
    this.name = name;
    this.author = author;
    this.price = price;
}

        2.默认构造方法:若未显式定义构造方法,编译器会自动生成无参构造方法;一旦手动定义,编译器不再生成。

        3.this 调用其他构造方法:通过 this(参数) 可在一个构造方法中调用另一个,但必须是第一条语句,且不能形成循环调用。

public Book() {
    this("未知书名", "未知作者", 0.0); //调用有参构造方法
}

六、封装:数据安全的保障

6.1 封装的概念

        封装是面向对象三大特性之一,指将数据和操作数据的方法结合,隐藏内部细节,仅对外公开接口。例如手机通过外壳隐藏内部芯片等硬件,仅提供屏幕、按键等交互接口。

6.2 访问限定符

        Java 通过访问限定符控制成员的可见性,共四种:

限定符同一类同一包不同包子类不同包非子类
private✔️❌❌❌
default(默认)✔️✔️❌❌
protected✔️✔️✔️❌
public✔️✔️✔️✔️

最佳实践:成员变量用 private 隐藏,通过 public 方法暴露访问接口。

public class Phone {
    private String brand; //私有属性,外部无法直接访问
    private double size; //屏幕尺寸
    
    //公开方法:获取品牌
    public String getBrand() {
        return brand;
    }
    
    //公开方法:设置品牌
    public void setBrand(String brand) {
        this.brand = brand;
    }
}

6.3 包:类的组织方式

包是管理类的目录结构,用于避免类名冲突和控制访问权限。

  • 导入包:用 import 语句导入其他包的类,如 import java.util.Scanner;
  • 自定义包:在类顶部用 package 声明,如 package com.demo.book;
  • 常见包:java.lang(自动导入)、java.util(工具类)、java.io(I/O 操作)等。

七、static 成员:类的共享资源

7.1 静态成员变量

被 static 修饰的成员变量属于类,而非某个对象,所有对象共享该变量。

特性:

  • 存储在方法区,不随对象创建而分配空间;
  • 可通过类名直接访问(推荐)或对象访问;
  • 生命周期与类一致(随类加载而创建,卸载而销毁)。

7.2 静态成员方法

        被 static 修饰的方法是类方法,用于操作静态成员。静态方法中不能访问非静态成员变量或方法(无 this 引用)。

示例:班级共享的学校名称

public class Class {
    private String className; //班级名称(每个班级不同)
    private static String schoolName = "阳光中学"; //学校名称(所有班级共享)
    
    //静态方法:获取学校名称
    public static String getSchoolName() {
        return schoolName;
    }
}

// 访问静态成员
public class Test {
    public static void main(String[] args) {
        System.out.println(Class.getSchoolName()); //输出:阳光中学
    }
}

八、代码块:初始化的补充机制

        代码块是用 {} 定义的代码片段,用于初始化成员变量,分为以下几类:

8.1 静态代码块

        用 static 修饰,用于初始化静态成员变量,类加载时执行一次(无论创建多少对象)。

public class Pet {
    private static String type; //宠物类型(所有宠物共享)
    
    //静态代码块
    static {
        type = "哺乳动物";
        System.out.println("静态代码块执行:初始化宠物类型");
    }
}

8.2 构造代码块(实例代码块)

        定义在类中,用于初始化实例成员变量,每次创建对象时执行。

public class Pet {
    private String name;
    private int age;
    
    //构造代码块
    {
        name = "无名";
        age = 1;
        System.out.println("构造代码块执行:初始化宠物基本信息");
    }
    
    //构造方法
    public Pet() {
        System.out.println("构造方法执行");
    }
}

执行顺序:静态代码块 → 构造代码块 → 构造方法。

九、内部类:类中的嵌套结构

        内部类是定义在另一个类中的类,用于描述仅为外部类服务的结构,是封装的一种体现。

9.1 实例内部类

        未被 static 修饰,依赖外部类对象存在,可访问外部类所有成员。

class Family {
    private String address; //家庭住址
    
    //实例内部类:家庭成员
    class Member {
        private String name;
        
        public void showFamilyInfo() {
            //可访问外部类的私有成员
            System.out.println("家庭住址:" + address);
            System.out.println("成员姓名:" + name);
        }
    }
}

//创建实例内部类对象
Family family = new Family();
Family.Member member = family.new Member();

9.2 静态内部类

        被 static 修饰,不依赖外部类对象,仅能访问外部类静态成员。

class Family {
    private static String familyName; //姓氏(静态成员)
    
    //静态内部类:家庭资产
    static class Asset {
        private double money;
        
        public void showFamilyName() {
            //仅能访问外部类的静态成员
            System.out.println("家庭姓氏:" + familyName);
        }
    }
}

//创建静态内部类对象
Family.Asset asset = new Family.Asset();

十、对象打印:自定义输出格式

        默认打印对象会输出 “类名 @哈希值”(如 Book@1b6d3586),需重写 toString() 方法自定义格式。

示例:重写 toString ()

public class Movie {
    private String name;
    private double score;
    
    //重写 toString()
    @Override
    public String toString() {
        return "电影{名称='" + name + "', 评分=" + score + "}";
    }
    
    public static void main(String[] args) {
        Movie movie = new Movie();
        movie.name = "流浪地球2";
        movie.score = 9.8;
        System.out.println(movie); //输出:电影{名称='流浪地球', 评分=9.8}
    }
}

总结

        类和对象是 Java 面向对象编程的基础,从抽象的类定义到具体的对象实例化,从封装特性到 static 成员、代码块、内部类,每个知识点都贯穿于 Java 开发的全过程。掌握这些概念不仅能帮助你写出更规范、易维护的代码,更为后续学习继承、多态等高级特性奠定坚实基础。希望通过本文的讲解,你能对类和对象有更清晰的理解,在 Java 编程之路上稳步前行!

全国青少年信息素养大赛图形化(Scratch)编程考点总结 阅读详情

相关推荐

CanOpen PDO映射实战:从原理到配置的完整指南

本文详细解析了CanOpen PDO映射的原理与配置流程,从基础通信机制到实战配置步骤,涵盖禁用PDO、清空映射、逐项映射和使能PDO等关键环节。特别针对西门子G120变频器、台达伺服和倍福CX控制器等不同厂商设备,提供了具体的配置技巧和常见问题排查指南,帮助工程师快速掌握多厂商设备间的PDO通信配置。

weixin_30718391的博客 516

【JAVA】类和对象

万字详解JAVA中的类和对象,你确定不要看看?

做梦都想要三十万年薪~ 4138

杰理芯片外挂Flash音乐播放功能避坑指南(附FAT文件系统配置)

本文详细解析了杰理芯片外挂Flash实现音乐播放功能的技术要点与常见问题,包括硬件连接、SPI驱动配置、FAT文件系统烧录及音乐播放集成等关键环节。特别针对Flash选型、FAT文件系统配置等易错点提供实用解决方案,帮助开发者高效完成嵌入式音频系统开发。

yhn45678901的博客 833

Java类和对象

面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等),哪些功能(用来干 啥),描述完成后计算机就可以识别了在java中定义类时需要用到class关键字,具体语法如下// 创建类field;// 字段(属性) 或者 成员变量method;// 行为 或者 成员方法class为定义类的关键字,ClassName为类的名字,{}中为类的主体。(关键字+类的名称+主体)//外卖平台// 食品// 商家。

2301_80176093的博客 2854

Plot3d 网格数据格式

PLOT3D是一个计算机图形程序,旨在可视化计算流体力学的网格和解决方案。PLOT3D文件可以是ASCII, 也可是Fortran unformatted 或 C binary形式。PLOT3D文件分为网格文件(XYZ 文件), 空气动力学结果文件 (Q 文件)和通用结果文件(函数文件 + 函数名称文件)。网格文件中可加入所谓的IBlank参数。

weixin_62592231的博客 3720

Isaac Lab强化学习实战:用SO-ARM101机械臂实现抓取任务(附B站视频教程)

本文详细介绍了如何使用Isaac Lab强化学习框架,在SO-ARM101机械臂上实现抓取任务的完整实战流程。内容涵盖从环境搭建、奖励函数设计、训练调参到模型部署的各个环节,并分享了Sim-to-Real迁移的关键技巧,旨在帮助开发者高效完成机器人强化学习项目。

weixin_29070721的博客 1102

Java—类和对象习题讲解

讲解Java类和对象里面的经典例题(让我们一起来巩固类和对象的知识吧!!!)

一年,我很需要这一年 3232

硬件基础(4):(6)高精度ADC设计中模拟地与数字地的划分与连接

在实际 PCB 设计中,**接地与布线**对于获得干净的参考电压和高精度 ADC 测量至关重要。下面详细阐述**如何在硬件层面减少数字噪声耦合到模拟电路、保障参考电压的稳定性**。

FCZlll的博客 2645

【Java】类和对象

Java是⼀⻔纯⾯向对象的语⾔(Object Oriented Program,简称OOP),在⾯向对象的世界⾥,⼀切皆为对象。⾯向对象是解决问题的⼀种思想,主要依靠对象之间的交互完成⼀件事情。⽤⾯向对象的思想来设计程序,更符合⼈们对事物的认知,对于⼤型程序的设计、扩展以及维护都⾮常友好。类是一种抽象的数据类型,它是对具有相同属性和行为的对象的抽象描述。简单来说,类定义了对象的状态(属性)和行为(方法)。定义一个类“汽车”品牌款式颜色速度启动加速刹车倒车//创建类。

user340的博客 2478

华为OD机试真题 新系统 2026-08-02 C++ 实现【战士技能规划设计】

你为一款动作游戏设计战士角色的技能。战士每个技能会消耗不同能量,释放技能有两个约束:连续释放技能数量不能超过 m 个,技能能量总和不能超过能量上限 k;如果超过则必须中断当前技能,进入调息状态,也就是分段。

MISAYAONE的博客 75

GlobalBuildingAtlas 建筑物白模数据下载

GlobalBuildingAtlas基于OSM开源数据构建全球建筑物3D白模,提供在线浏览和下载服务。官方资源包括GitHub项目地址和TUM数据库链接,支持行政区划检索建筑物数据。

一醉千秋的专栏 540

JAVA_类和对象

猛肝数万字带你理解类和对象!!!

2401_82914354的博客 978

PCB Layout工程师核心能力与实战进阶指南

PCB Layout是电子硬件从原理图到物理实现的关键环节,本质是将电路逻辑转化为受电磁场、热力学与制造工艺约束的三维空间结构。其设计质量直接决定信号完整性(SI)、电源完整性(PI)和电磁兼容性(EMC)等核心性能指标。随着高速接口(如PCIe Gen5、USB3.2)、高密度封装(BGA微间距、HDI)及车规/工业级可靠性要求提升,Layout已从‘连线’演进为多目标协同优化的系统工程。掌握Altium Designer等EDA工具、理解叠层设计与DFM规则、具备SI/PI仿真意识,并能贯通芯片Data

weixin_42589700的博客 87

Java中的类和对象

Java类和对象“速成”

2301_81375781的博客 1226

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java——类和对象

C语言是一个面向过程的语言,而Java是一个面向对象的语言,强调类和对象的概念,以面向对象的方式来编写代码,本篇文章就带大家了解java中类和对象有关的内容。定义类使用class关键字,沿用上面的例子// 加速的行为// 刹车的行为// 转弯的行为上面三个是车的属性,叫成员变量,下面三个是车的行为,叫成员方法。这里面包含的内容统称为类的成员。构造方法(Constructor)是一种特殊类型的方法,在创建类的实例(对象)时用于初始化对象的特定属性。

2301_80817503的博客 1225

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java的类和对象

Java的类和对象是面向对象编程的核心概念。类是对象的模板,定义对象的属性和方法;对象是类的实例,具有类定义的属性和方法,并能进行交互。通过类和对象,Java实现代码重用和模块化。使用{}定义的一段代码.普通代码块构造块静态块同步代码块一个类可以产生无数的对象,类就是模板,对象就是具体的实例。类中定义的属性,大概分为几类:类属性,对象属性。其中被static所修饰的数据属性称为类属性,static修饰的方法称为类方法,特点是不依赖于对象,我们只需要通过类名就可以调用其属性或者方法。

qq_74013365的博客 1771

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java中的类和对象

面向对象是解决问题的一种思想,主要依靠对象的交换完成一件事情类是⽤来对⼀个实体(对象)来进⾏描述的代码.主要描述该实体(对象)具有哪些属性(外观尺⼨等),哪些功能(⽤来⼲啥)。举个栗子:以洗衣机为例,可以将洗衣机看成是一个类别。

2401_89023011的博客 1318

JAVA 类和对象的实例

JAVA 类和对象的实例 什么是类? 1. 类是具有相同的属性和功能的事物的抽象的集合,在面向对象程序设计中,人们把一类事物的静态属性和动态可以执行的操作组合在一起就得到类这个概念。 2. 类是个抽象的概念,用来模拟一类事物,一旦定义了一个类,这个类就永远存在。 比如:人,人有男人和女人,他们都有身高,体重等相同的属性,他们都具有走路,吃饭,工作等这些相同的,可动态执行的操作,所以可以定义“人类”...

weixin_43805637的博客 1万+
上一篇: C语言实现贪吃蛇游戏
下一篇: Java 继承与多态
THGML
博客等级 码龄3年 49粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值