java基础概念13-类和对象

一、面向对象OOP

类class:相同事物的共性的代码描述,所有类是引用数据类型

对象(实例)instance:类的具体的一个个体的实物。

二、类的定义

在Java中,一个类(Class)是定义对象的蓝图或模板,它包含了描述该类对象状态的数据(属性或字段)以及操作这些数据的方法

示例:

2-1、对象成员变量的默认初始化值

三、封装

示例:

3-1、private权限修饰符

为了防止出现以上的赋值错误,用private修饰属性。

 

小结:

四、this关键字

4-1、成员变量、局部变量

1、成员变量

  1. 定义:成员变量是定义在中的变量,而不是在方法内部。它们可以是任何类型,包括基本数据类型和引用类型。

  2. 作用域:成员变量的作用域是整个类体(从声明点开始,直到类结束)。但是,它们的访问可能受到访问修饰符(如public、protected、private和默认(无修饰符))的限制。

  3. 生命周期:成员变量的生命周期与对象实例的生命周期相同。当对象被创建时,成员变量被分配内存并初始化(如果未显式初始化,则自动初始化为默认值)。当对象被销毁时,成员变量所占用的内存也会被释放。

  4. 访问方式:成员变量可以通过对象实例来访问(对于非静态成员变量)或通过类名来访问(对于静态成员变量)。

2、局部变量

  1. 定义:局部变量是定义在方法代码块(如if语句、循环等)内部的变量。它们仅在定义它们的方法或代码块内部可见和可用。

  2. 作用域:局部变量的作用域是从其声明点开始,到包含它的代码块结束。一旦离开这个作用域,局部变量就不能再被访问。

  3. 生命周期:局部变量的生命周期是从其被声明并初始化时开始,到包含它的代码块执行完毕时结束。一旦局部变量所在的代码块执行完毕,局部变量所占用的内存就会被释放

  4. 访问方式:局部变量只能在声明它们的代码块内部被访问。

  5. 初始化:局部变量在使用前必须显式初始化,否则编译器会报错。这是因为局部变量存储在上,而栈上的内存是自动管理的,如果不初始化,编译器无法确定其初始值。

3、小结

 

4-2、就近原则(变量遮蔽)

如果一个局部变量(或参数)的名称与类中的一个成员变量相同,那么在这个局部变量被声明的代码块中,成员变量会被遮蔽。

class Test {  
    int x = 10; // 成员变量  

    void method() {  
        int x = 20; // 局部变量,遮蔽了成员变量x  
        System.out.println(x); // 输出20,因为局部变量x在作用域上更近  
    }  
}

4-3、this的作用

this关键字是一个非常重要的引用变量,它指向当前对象的实例。

this可以区别成员变量和局部变量,当局部变量与成员变量同名时,访问当前对象的成员变量。

若是想要访问被遮蔽的成员变量,需要用this关键字。

五、构造方法(构造器、构造函数)

作用:在创建对象的时候给成员变量进行赋值的。

修饰符 类型(参数列表)
{
    // 方法体
}

一个类可以有多个构造方法,只要它们的参数列表不同(这称为方法重载)。

【注意】默认构造方法

        如果类中没有明确声明任何构造方法,则Java编译器会自动提供一个无参的默认构造方法。但是,如果类中定义了至少一个构造方法(无论是否有参数),则不会自动生成默认构造方法

        若是自己重载了构造方法,一般需要把空参构造也创建出来!!!

 示例:

public class Person {  
    // 成员变量  
    String name;  
    int age;  
  
    // 无参构造方法  
    public Person() {  
        this.name = "Unknown";  
        this.age = 0;  
    }  
  
    // 有参构造方法  
    public Person(String name, int age) {  
        this.name = name;  
        this.age = age;  
    }  
  
    // 另一个有参构造方法,参数列表不同,实现了构造方法重载  
    public Person(String name) {  
        this.name = name;  
        this.age = -1; // 假设-1表示年龄未知  
    }  
  
    // 成员方法(示例)  
    public void display() {  
        System.out.println("Name: " + name + ", Age: " + age);  
    }  
  
    public static void main(String[] args) {  
        // 使用无参构造方法创建对象  
        Person p1 = new Person();  
        p1.display(); // 输出: Name: Unknown, Age: 0  
  
        // 使用有参构造方法创建对象  
        Person p2 = new Person("Alice", 30);  
        p2.display(); // 输出: Name: Alice, Age: 30  
  
        // 使用另一个有参构造方法创建对象  
        Person p3 = new Person("Bob");  
        p3.display(); // 输出: Name: Bob, Age: -1  
    }  
}

小结:

六、javabean类、pojo类

6-1、javabean类

 

JavaBean类是一种遵循特定规范的Java类,JavaBean类具有以下几个核心特点:

  1. 公共类与无参构造方法:JavaBean类必须是public,并且提供一个无参数的公共构造方法public constructor)。这个无参构造方法允许在不指定任何参数的情况下创建类的实例。

  2. 属性封装:JavaBean的属性(即类的成员变量)必须是私有的(private,以确保封装性。这意味着类的内部状态不能直接被外部访问或修改。为了访问和修改这些私有属性,JavaBean类必须提供公共的getter和setter方法。这些方法遵循特定的命名规则,例如,对于名为name的属性,getter方法命名为getName(),setter方法命名为setName(String name)

  3. 可重用性与可维护性:通过封装数据和相关的操作方法,JavaBean提供了一种可重用且易于维护的组件。这使得JavaBean在Java EE和其他Java应用程序框架中非常受欢迎,因为它们可以被轻松地插入到其他应用程序中,以实现特定的功能。

  4. 序列化(可选):虽然序列化不是JavaBean的必要条件,但许多JavaBean实现了Serializable接口,以便它们可以被序列化到磁盘或通过网络发送。这对于分布式应用程序和需要持久化存储数据的应用程序非常有用。

  5. 命名规范:JavaBean的命名遵循一定的规范,例如,包名全部小写,类名每个单词首字母大写(驼峰命名法),属性名和方法名也遵循类似的命名规则。

6-2、pojo类

POJO(Plain Old Java Object)类指的是简单的Java对象,它们不依赖于任何特定的框架或技术,也不继承任何特殊的类或实现任何特殊的接口。

POJO类通常只包含一些属性和对应的getter/setter方法,用于存储和访问数据,而不包含任何业务逻辑。

在MVC(模型-视图-控制器)架构中,POJO类常用作模型层的一部分,用于表示应用程序的数据。

POJO与JavaBean在概念上有些相似,但JavaBean通常要求实现Serializable接口和提供无参构造方法,而POJO则没有这些要求。因此,可以认为JavaBean是POJO的一个特例或子集。

七、对象内存图

【回顾】:

方法区:

当要运行一个类的时候,这个类的字节码文件(xxxx.class)会被加载到方法区中临时存贮。

 

7-1、一个对象的内存图

当main()方法执行结束后,main()方法会从栈内存中出去,main()方法中的变量也就没有了!

栈中变量指向的堆内存的箭头也就没有了。

所以,堆内存中若是没有变量指向这个空间,这个空间也会在堆内存中消失,变成垃圾!

八、基本数据类型 VS 引用数据类型

8-1、基本数据类型

 

8-2、引用数据类型

8-3、小结

九、this的内存原理

 this的本质:表示所在方法调用者的地址值

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值