【Java】类和对象

简介: 对象面向对象类的定义、属性的定义关于属性的初始化的语法实例化实例化的三个步骤this的作用变量的三种类型普通方法和静态方法static的理解

对象

对象:把一些相关的属性进行统一绑定

对象的模板是通过来构造的            

       例如:

               一批学生的姓名和身高,就可以通过构造对象来使学生的姓名和身高一一对应起来

3.png


面向对象

1)概念层(现实生活中)                万物皆对象


2)逻辑层(存在于开发人员脑海中的世界)


       对现实中一类有形或无形的概念的特征抽取


       特征表现为属性


       对其行为的抽取,表现为方法


       对象的职责不同,方法不同


3)物理层


       对象在堆区


类的定义、属性的定义

public class Student {
    String name;
    int age;
}

注:属性定义在类的内部,方法的外部并且没有 static 修饰


关于属性的初始化的语法

默认值规则

默认值为“0”的变形


String类型        =>        "NULL"


int类型              =>        0


boolean类型     =>        false


构造方法的规则(构造器)


1.构造的方法的名称==类名称


2.没有返回值类型的声明


3.构造器重载:可以定义多个构造器,参数列表的类型不同即可


4.实例化时,根据参数列表选择何时的构造方法调用


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

实例化

实例化过程:类 -> 对象

语法:

Person p = new Person("小A",173);

通过引用使用指向对象的属性

p.name = ...;

... = p.name;


4.png


实例化的三个步骤

1.通过类中的信息,计算对象的内存大小

  再由JVM分配内存

  把这段内存区域全部初始化为0

2.执行对象的初始化过程

  调用初始化函数

3.引用复制


this的作用

1.this是一种引用,类型是当前类


       指向当前对象,构造器中的this指向的是当前正在构造的对象


       this.name


       this.age                属性的全名


2.在一个构造方法中引用其他构造方法


       this(...)必须在第一行


变量的三种类型

变量         生命周期 存放区域
局部变量 跟着方法走 栈帧 > 栈
类方法、静态变量、静态属性 跟着类的加载、卸载走 类 > 方法区
实例变量、属性 跟着对象实例化、清理走 对象 > 堆区


普通方法和静态方法

静态方法(类方法)

     加static修饰        不能访问属性,不可以使用this


       内部不能调用普通方法


       调用时,直接调用即可


普通方法(实例方法)


       不加static修饰        可以访问属性,可以使用this


       内部可以调用普通方法


       调用时,必须依赖一个对象(通过引用)的存在


Person  p  =  new  Person();


  p.sayHello();                引用  " . "  普通方法()


static的理解

加了static之后,就和类有关,和类的对象无关


反之,不加static,和本类的对象息息相关


目录
相关文章
|
14天前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
42 0
|
2天前
|
存储 Java
java的对象详解
在Java中,对象是根据类模板实例化的内存实体,具有唯一标识符、属性及行为。通过`new`关键字实例化对象并用构造方法初始化。变量存储的是对象引用而非对象本身,属性描述对象状态,方法定义其行为。Java利用垃圾回收机制自动处理不再使用的对象内存回收,极大地简化了对象生命周期管理,同时对象具备封装、继承和多态性,促进了代码的重用与模块化设计。这使得Java程序更易于理解、维护和扩展。
|
2天前
|
Java
java的类详解
在 Java 中,类是面向对象编程的核心概念,用于定义具有相似特性和行为的对象模板。以下是类的关键特性:唯一且遵循命名规则的类名;描述对象状态的私有属性;描述对象行为的方法,包括实例方法和静态方法;用于初始化对象的构造方法;通过封装保护内部属性;通过继承扩展其他类的功能;以及通过多态增强代码灵活性。下面是一个简单的 `Person` 类示例,展示了属性、构造方法、getter 和 setter 方法及行为方法的使用。
|
6天前
|
Java API 开发者
【Java字节码操控新篇章】JDK 22类文件API预览:解锁Java底层的无限可能!
【9月更文挑战第6天】JDK 22的类文件API为Java开发者们打开了一扇通往Java底层世界的大门。通过这个API,我们可以更加深入地理解Java程序的工作原理,实现更加灵活和强大的功能。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来!
|
4天前
|
Java
Java 对象和类
在Java中,**类**(Class)和**对象**(Object)是面向对象编程的基础。类是创建对象的模板,定义了属性和方法;对象是类的实例,通过`new`关键字创建,具有类定义的属性和行为。例如,`Animal`类定义了`name`和`age`属性及`eat()`、`sleep()`方法;通过`new Animal()`创建的`myAnimal`对象即可调用这些方法。面向对象编程通过类和对象模拟现实世界的实体及其关系,实现问题的结构化解决。
|
7天前
|
存储 Java 程序员
优化Java多线程应用:是创建Thread对象直接调用start()方法?还是用个变量调用?
这篇文章探讨了Java中两种创建和启动线程的方法,并分析了它们的区别。作者建议直接调用 `Thread` 对象的 `start()` 方法,而非保持强引用,以避免内存泄漏、简化线程生命周期管理,并减少不必要的线程控制。文章详细解释了这种方法在使用 `ThreadLocal` 时的优势,并提供了代码示例。作者洛小豆,文章来源于稀土掘金。
|
4天前
|
Java API 开发者
【Java字节码的掌控者】JDK 22类文件API:解锁Java深层次的奥秘,赋能开发者无限可能!
【9月更文挑战第8天】JDK 22类文件API的引入,为Java开发者们打开了一扇通往Java字节码操控新世界的大门。通过这个API,我们可以更加深入地理解Java程序的底层行为,实现更加高效、可靠和创新的Java应用。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来,并积极探索类文件API带来的无限可能!
|
15天前
|
存储 Java
Java编程中的对象序列化与反序列化
【8月更文挑战第28天】在Java世界中,对象序列化与反序列化是数据持久化和网络传输的关键技术。本文将深入浅出地探讨这一过程,带你领略其背后的原理及应用,让你的程序在数据的海洋中自由航行。
|
15天前
|
机器学习/深度学习 人工智能 算法
探索人工智能在医疗诊断中的应用与挑战Java编程中的对象和类:基础与实践
【8月更文挑战第27天】随着人工智能(AI)技术的飞速发展,其在医疗领域的应用日益广泛。本文深入探讨了AI技术在医疗诊断中的具体应用案例,包括图像识别、疾病预测和药物研发等方面,并分析了当前面临的主要挑战,如数据隐私、算法偏见和法规限制等。文章旨在为读者提供一个全面的视角,理解AI在改善医疗服务质量方面的潜力及其局限性。
|
16天前
|
Java Spring 容器
Java获取接口的所有实现类方法
这篇文章介绍了在Java中获取接口所有实现类的方法,包括使用JDK的ServiceLoader(SPI机制)和Spring Boot中的@Autowired自动注入及ApplicationContextAware接口两种方式。
37 1