• Java从入门到精通-类和对象(一)


    0. 类和对象

    1. 面向对象概述

    Java面向对象编程(Object-Oriented Programming,OOP)是一种强大的编程范式,它基于对象、类、封装、继承和多态等核心概念。这种编程范式使得代码更加模块化、可维护、可重用和可扩展。

    1.1 对象和类

    在Java中,一切都是对象。对象是程序中的基本单位,它代表现实世界中的实体或概念。例如,我们可以考虑一个简单的汽车对象:

    1. class Car {
    2. String color;
    3. int speed;
    4. void start() {
    5. System.out.println("汽车启动了!");
    6. }
    7. void accelerate() {
    8. System.out.println("汽车加速中...");
    9. }
    10. }

    在示例中,我们定义了一个名为Car的类,它具有颜色(color)和速度(speed)这两个属性,以及两个方法(start()accelerate())。这个类描述了汽车的特征和行为。

    1.2 封装

    封装是OOP的一个关键概念,它指的是将数据和方法封装在类内部,以保护数据的安全性。只有类的方法可以访问和修改类的数据,外部代码无法直接访问或修改数据。这提高了代码的可维护性和安全性。让我们看一个封装的示例:

    1. class BankAccount {
    2. private double balance;
    3. public void deposit(double amount) {
    4. if (amount > 0) {
    5. balance += amount;
    6. }
    7. }
    8. public double getBalance() {
    9. return balance;
    10. }
    11. }

    在示例中,balance属性被声明为private,这意味着只有BankAccount类的方法才能访问它。外部代码必须通过公共方法(deposit()getBalance())来操作和获取账户余额。

    1.3 继承

    继承是OOP的另一个关键概念,它允许一个类(子类/派生类)继承另一个类(父类/基类)的属性和方法。子类可以重用父类的代码,并且可以添加自己的特定属性和方法。这有助于代码重用和建立层次化结构。示例如下:

    1. class Animal {
    2. void eat() {
    3. System.out.println("动物吃东西");
    4. }
    5. }
    6. class Dog extends Animal {
    7. void bark() {
    8. System.out.println("狗在叫");
    9. }
    10. }

    在示例中,Animal类定义了eat()方法,而Dog类继承了Animal类,并添加了自己的bark()方法。这使得Dog类既可以调用eat()方法,也可以调用bark()方法。

    1.4 多态

    多态是OOP的另一个强大概念,它允许不同类的对象对相同的消息(方法调用)作出不同响应。多态允许对象根据其实际类型执行不同的行为。示例如下:

    1. class Shape {
    2. void draw() {
    3. System.out.println("绘制形状");
    4. }
    5. }
    6. class Circle extends Shape {
    7. @Override
    8. void draw() {
    9. System.out.println("绘制圆形");
    10. }
    11. }
    12. class Square extends Shape {
    13. @Override
    14. void draw() {
    15. System.out.println("绘制正方形");
    16. }
    17. }

    在示例中,Shape类定义了draw()方法,而CircleSquare类都继承了Shape类并重写了draw()方法。这意味着可以创建ShapeCircleSquare对象,并调用它们的draw()方法,它们会根据实际类型执行不同的绘制行为。

    2. 类

    类是面向对象编程的基本构建块之一。类定义了对象的结构和行为。让我们深入了解类的概念,包括成员变量、成员方法、权限修饰符、局部变量、局部变量的有效范围、this关键字以及类的构造方法。

    2.1 类的基本结构

    一个类的基本结构通常包括以下部分:

    1. public class ClassName {
    2. // 成员变量(属性)
    3. dataType variable1;
    4. dataType variable2;
    5. // 构造方法
    6. public ClassName(parameters) {
    7. // 构造方法的初始化代码
    8. }
    9. // 成员方法
    10. returnType methodName(parameters) {
    11. // 方法体
    12. }
    13. // 其他成员方法
    14. }
    1. 成员变量(属性):
    • 成员变量是类的属性,用于存储对象的状态信息。
    • 定义了类的特征或数据。
    2. 构造方法:
    • 构造方法是一个特殊的方法,用于初始化对象的属性。
    • 在创建对象时自动调用,通常用于执行必要的初始化操作。
    • 构造方法的名称与类名相同。
    3. 成员方法:
    • 成员方法定义了对象可以执行的操作。
    • 定义了类的行为或操作。

    2.2 成员变量

    成员变量是类的属性,它们用于存储对象的状态信息。在类中声明成员变量时,可以使用不同的权限修饰符,如privatepublicprotected等,以控制其可访问性。例如:

    1. public class Student {
    2. // 成员变量
    3. public String name; // 公共成员变量
    4. private int age; // 私有成员变量
    5. protected double gpa; // 受保护的成员变量
    6. }

    2.3 构造方法

    构造方法是用于初始化对象的特殊方法。每个类可以有一个或多个构造方法,根据不同的参数列表进行重载。构造方法的名称必须与类名相同,它没有返回值。

    1. public class Student {
    2. private String name;
    3. private int age;
    4. // 构造方法
    5. public Student(String name, int age) {
    6. this.name = name;
    7. this.age = age;
    8. }
    9. }

    在示例中,Student类有一个构造方法,接受姓名和年龄作为参数,用于初始化学生对象的属性。

    2.4 成员方法

    成员方法定义了对象可以执行的操作。它们用于定义类的行为或操作。成员方法的声明包括返回类型、方法名、参数列表和方法体。

    1. public class Calculator {
    2. // 成员方法:加法
    3. public int add(int num1, int num2) {
    4. return num1 + num2;
    5. }
    6. // 成员方法:除法
    7. public double divide(double dividend, double divisor) {
    8. if (divisor != 0) {
    9. return dividend / divisor;
    10. } else {
    11. System.out.println("除数不能为零");
    12. return Double.NaN; // 返回NaN表示不是一个数字
    13. }
    14. }
    15. }

    在示例中,Calculator类定义了两个成员方法,add()divide(),分别用于执行加法和除法操作。

    2.5 权限修饰符

    Java提供了不同的权限修饰符,用于控制成员变量和成员方法的可访问性:

    • public:可以在任何地方访问。
    • private:只能在类内部访问。
    • protected:只能在同一包内或子类中访问。
    • 默认(无修饰符):只能在同一包内访问。

    2.6 局部变量和有效范围

    局部变量是在方法或代码块内部声明的临时变量。它们的作用域仅限于声明它们的代码块内部。例如:

    1. public class Example {
    2. public void someMethod() {
    3. int x = 10; // 局部变量,只能在someMethod()方法内部访问
    4. }
    5. }

    2.7 this关键字

    this关键字用于引用当前对象的引用。它可以用于区分成员变量和局部变量,特别是在成员方法中。例如:

    1. public class Person {
    2. private String name;
    3. public void setName(String name) {
    4. // 使用this关键字来引用成员变量
    5. this.name = name;
    6. }
    7. }

    在示例中,使用this.name来引用成员变量,以区分成员变量和方法参数的name

  • 相关阅读:
    【Jmeter 简单使用】
    解决 Elasticsearch 分页查询记录超过10000时异常
    python分享之读取xml文件(2)
    从过滤器初识责任链设计模式
    RCE远程控制漏洞(上)
    随笔:使用Python爬取知乎上相关问题的所有回答
    PostgreSQL-HA 高可用集群在 Rainbond 上的部署方案
    计算机视觉:人脸识别与检测
    NFT 的潜力:扩展的艺术品鉴定证书
    洛谷C++简单题小练习day12—寻找最小值小程序
  • 原文地址:https://blog.csdn.net/m0_53918860/article/details/132790055