0

0

Java类与对象的定义与实例化

P粉602998670

P粉602998670

发布时间:2026-01-17 15:35:47

|

452人浏览过

|

来源于php中文网

原创

一个合法的java类至少需类声明和一对花括号;public类必须与文件同名且唯一;成员变量有默认值,局部变量须显式初始化;构造方法可重载,但this()或super()须为首行;new对象时按分配内存→设默认值→执行实例初始化→调构造方法顺序进行。

java类与对象的定义与实例化

Java中类的定义必须包含哪些基本要素

一个合法的Java类至少要有类声明和一对花括号,内部可空,但不能缺省访问修饰符(默认包级可见)或 public。如果类名与文件名不一致,且该类是 public 的,编译会直接报错:class XXX is public, should be declared in a file named XXX.java

常见疏漏点:

  • public 类只能有一个,且必须与文件同名
  • 成员变量未初始化时,数值类型默认为 00.0,引用类型为 null,但局部变量必须显式赋值才能使用,否则编译报错:variable XXX might not have been initialized
  • 构造方法不是必须写,但一旦自定义了带参构造,无参构造就不再自动提供

如何正确实例化对象并避免空指针异常

实例化本质是调用构造方法生成堆内存中的对象,并将引用赋给上的变量。最简形式是 new ClassName(),但若构造方法抛出异常(如 IOException),必须用 try-catch 包裹或向上声明。

容易踩的坑:

立即学习Java免费学习笔记(深入)”;

成新网络商城购物系统
成新网络商城购物系统

使用模板与程序分离的方式构建,依靠专门设计的数据库操作类实现数据库存取,具有专有错误处理模块,通过 Email 实时报告数据库错误,除具有满足购物需要的全部功能外,成新商城购物系统还对购物系统体系做了丰富的扩展,全新设计的搜索功能,自定义成新商城购物系统代码功能代码已经全面优化,杜绝SQL注入漏洞前台测试用户名:admin密码:admin888后台管理员名:admin密码:admin888

下载
  • 只声明不实例化:MyClass obj; 此时 objnull,后续调用方法会触发 NullPointerException
  • 误把实例化写成方法调用:MyClass obj = MyClass(); —— 编译错误,缺少 new
  • 在静态上下文(如 main 方法)中直接访问非静态成员,会报错:non-static variable XXX cannot be referenced from a static context

构造方法重载与 this() 调用的限制条件

构造方法可以重载,参数列表不同即可。但要注意:每个构造方法的第一条语句,要么是 this(...)(调用本类其他构造),要么是 super(...)(调用父类构造)。二者不可共存,也不能放在第二行以后。

典型错误场景:

  • this(...)super(...) 同时出现 → 编译失败
  • this(...) 前有普通语句(如 int x = 1;)→ 编译失败
  • 递归调用构造(this() 在无参构造里又调自己)→ 编译期就拒绝
public class Person {
    private String name;
    private int age;

    public Person() {
        this("unknown", 0); // ✅ 必须第一行
    }

    public Person(String name) {
        this(name, 18); // ✅
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

对象创建时的内存分配与初始化顺序

每次 new 触发四步:1)分配堆内存;2)字段设默认值;3)执行显式初始化和实例代码块(按源码顺序);4)调用构造方法。父类初始化总在子类之前。

这个顺序直接影响字段值是否符合预期。例如:

  • 字段声明时的初始化表达式,比构造方法体先执行
  • 实例代码块({ ... })和字段初始化按书写顺序合并执行,早于构造方法体
  • 静态字段和静态代码块只在类首次加载时执行一次,与对象数量无关

如果在构造方法中提前调用被子类重写的方法(即“构造器中调用可覆盖方法”),可能访问到未初始化的子类字段——这是个隐蔽但高频的 bug 来源。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

252

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1008

2024.03.01

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

930

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

602

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

294

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

212

2025.08.29

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

433

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

600

2023.08.10

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

4

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4.1万人学习

C# 教程
C# 教程

共94课时 | 10.7万人学习

Java 教程
Java 教程

共578课时 | 77万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号