面向对象编程(JAVA基础)

本文详细介绍了Java面向对象编程的基础知识,包括对象和类的区别、属性、方法、构造方法、JVM内存模型、垃圾回收机制、this关键字、static关键字、包机制、继承、封装、多态、抽象类和抽象方法、接口以及内部类。通过对这些概念的理解,读者将能够更好地掌握Java OOP的精髓,提升编程能力。
摘要由CSDN通过智能技术生成

目录

一.对象和类的区别

二.属性

三.方法

四.构造方法

五.JVM内存模型图

1.方法区(Method Area):

2.堆区(Heap):

3.栈区(Stack):

4.Java虚拟机栈(Java Virtual Machine Stacks):

5.程序计数器(Program Counter Register):

六.垃圾回收机制

七.this关键字

八.static关键字

九.包机制:package和import

1.包机制(Package Mechanism):

2.package关键字:

3.import关键字:

4.包

十.继承

十一.封装

十二.多态

十三.抽象类和抽象方法

1.抽象类:

2.抽象方法:

十四.接口

接口的特点:

十五.内部类

内部类的主要特点和用途包括:


一.对象和类的区别

在Java编程中,对象和类是两个基本概念,它们有着明显的区别。

类(Class)可以被视为一种蓝图或模板,用于描述具有相同属性和行为的对象的集合。类定义了对象的状态(即属性或数据成员)和行为(即方法或函数)。类是一种抽象的数据类型,它只存在于程序中,并不直接对应于现实世界的任何实体。例如,“人”这个类可以包含许多属性,如姓名、年龄、性别等,以及行为,如说话、行走等。

对象(Object)则是类的实例化,是现实世界中的实体在计算机世界中的表示。对象是类的具体实例,具有类的所有属性和行为。每个对象都有自己独特的状态和行为,可以与其他对象进行交互。例如,在程序中创建一个名为“张三”的“人”对象,这个对象就会具有“人”类所定义的所有属性和行为,并且可以有自己的独特属性值(如姓名为“张三”)。

简而言之,类是对一类事物的抽象描述,而对象则是这个抽象描述的具体实现。类定义了对象的结构和行为,而对象则是类的具体实例,具有自己的状态和行为。在Java中,使用“class”关键字来定义类,使用“new”关键字来创建对象。

二.属性

在Java面向对象编程中,属性(Attributes)是类的重要组成部分,也被称为类的成员变量或字段。属性用于描述对象的状态或特征,是对象数据的存储单位。

以下是关于Java面向对象编程属性的几个要点:

定义属性:
在Java类中,属性通常定义在类的内部,位于方法之外。它们可以是任何有效的数据类型,包括基本数据类型(如int, double, char等)和引用数据类型(如String, 数组, 其他类等)。

public class Person {
    // 定义属性
    private String name;
    private int age;
    private boolean isStudent;
}

访问修饰符:
属性可以具有访问修饰符(如public, private, protected, 默认(无修饰符)),这些修饰符决定了属性对于其他类的可见性和可访问性。属性封装:
为了提高数据的安全性和保护对象的内部状态,通常将属性声明为私有(private),并提供公共的getter和setter方法来访问和修改这些属性。

public class Person {
    private String name;

    // Getter方法
    public String getName() {
        return name;
    }

    // Setter方法
    public void setName(String name) {
        this.name = name;
    }
}

属性初始化:
属性可以在声明时初始化,也可以在构造方法中进行初始化。

public class Person {
    private String name = "Anonymous"; // 声明时初始化
    private int age;

    public Person(int age) {
        this.age = age; // 构造方法中初始化
    }
}

静态属性:
属性也可以是静态的(static),这意味着该属性属于类本身,而不是类的任何特定实例。静态属性通常用于存储与类相关但不依赖于对象状态的信息。

public class Person {
    private static int totalPeople = 0; // 静态属性

    // ... 其他属性和方法
}

属性与实例变量:
在Java中,类的属性通常被称为实例变量,因为它们与类的实例(即对象)相关联。每个对象都有其自己的属性副本。

属性与局部变量:
与在方法内部定义的局部变量不同,属性是类的成员,而局部变量只存在于方法执行期间。

了解和正确使用属性是Java面向对象编程的重要组成部分。通过封装属性并提供适当的访问方法,可以确保数据的完整性和安全性,同时提高代码的可维护性和可读性。

三.方法

在Java面向对象编程中,方法(Method)是类的重要组成部分,它们定义了对象的行为和功能。方法是一种特殊的函数,用于执行特定的任务或计算,并且可以操作对象的属性(即成员变量)。

以下是关于Java方法的一些要点:

定义方法:
方法定义在类的内部,通常位于类的底部。方法的定义包括方法名、参数列表、返回类型和方法体。方法体包含了执行特定任务所需的Java代码。

public class Person {
    private String name;
    private int age;

    // 定义一个方法
    public void introduce() {
        System.out.println("My name is " + name + " and I am " + age + " years old.");
    }
}

方法签名:
方法的名称和参数列表共同构成了方法签名,它唯一地标识了一个方法。方法的返回类型不包含在方法签名中。

访问修饰符:
方法可以有访问修饰符(如public, private, protected, 默认(无修饰符)),它们决定了方法对于其他类的可见性和可访问性。

返回类型:
方法可以有一个返回类型,这指定了方法执行后返回给调用者的数据类型。如果方法不返回任何值,则使用关键字void。

参数:
方法可以接受参数,这些参数在方法调用时传递,并在方法内部使用。参数可以是基本数据类型或对象类型,也可以有多个参数。

静态方法:
使用static关键字声明的方法称为静态方法。静态方法属于类本身,而不是类的实例,因此可以在没有创建对象的情况下调用。静态方法通常用于执行与类相关但不依赖于对象状态的操作。

实例方法:
非静态方法称为实例方法。实例方法属于类的实例,并且需要通过对象来调用。实例方法可以访问和修改对象的属性。

方法重载(Overloading):
在同一个类中,可以定义多个名称相同但参数列表不同的方法,这称为方法重载。Java编译器根据参数的类型和数量来确定调用哪个方法。

方法重写(Overriding):
在继承关系中,子类可以定义与父类中名称和参数列表相同的方法,这称为方法重写。子类重写的方法具有与父类方法相同的返回类型,并且通常用于提供特定的实现细节。

了解和使用方法是Java面向对象编程的关键部分。通过定义适当的方法,可以创建功能强大且可维护的代码,以响应用户需求并执行各种计算任务。

四.构造方法

构造方法(Constructor)是一种特殊的方法,主要用于在创建对象时初始化对象。在Java等面向对象的编程语言中,每个类都有一个或多个构造方法。

以下是关于构造方法的一些要点:

定义:
构造方法是一种特殊的方法,其名称与类的名称完全相同,并且没有返回类型,甚至连void也没有。

作用:

构造方法用于创建并初始化一个类的对象。
当使用new关键字创建对象时,构造方法会被自动调用。

特点:

构造方法的名称必须与类的名称完全相同。
构造方法没有返回类型,即使不使用void关键字。
构造方法主要用于初始化对象的状态。
构造方法不能被static、final、synchronized、abstract和native修饰。

类型:

无参构造方法:不接受任何参数的构造方法。
有参构造方法:接受一个或多个参数的构造方法。

默认构造方法:
如果一个类没有定义任何构造方法,那么Java编译器会为其提供一个默认的无参构造方法。但是,一旦我们在类中定义了至少一个构造方法,编译器就不会再自动提供默认构造方法了。

重载:
构造方法可以被重载,这意味着一个类可以有多个构造方法,只要它们的参数列表不同。

调用:
构造方法的调用是在创建对象时自动进行的,使用new关键字和类名来调用。例如,MyClass obj = new MyClass(); 这行代码会调用MyClass类的无参构造方法。

继承:
子类在创建对象时,首先会调用父类的构造方法(通过super关键字),然后再执行自己的构造方法。

构造方法的主要目的是确保对象在被使用之前被正确地初始化。通过定义不同的构造方法,我们可以为类的实例化提供不同的初始化方式。

五.JVM内存模型图

JVM(Java虚拟机)内存模型主要包含以下几个部分:

1.方法区(Method Area):

也被称为元数据区(Metaspace),它存储了已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

2.堆区(Heap):

这是JVM所管理的最大一块内存区域,几乎所有的对象实例都在这里分配内存。堆区是线程共享的内存区域,它还可以细分为:新生代和老年代。

新生代(Young Generation):新创建的对象首先被分配到这里,并且新生代内存又被分为三部分,Eden区、From Survivor区和To Survivor区。
老年代(Old Generation):存放长期存活的对象。

3.栈区(Stack):

每个线程在创建时都会创建一个虚拟机栈,每一个方法执行的时候都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只藏羚吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值