14天Java基础学习——第6天:面向对象编程(类与对象)

第6天:面向对象编程(类与对象)

目标

本节的目标是深入理解面向对象编程中的类与对象概念,包括类的定义、对象的创建、构造方法、封装、访问修饰符、this关键字,以及静态与实例成员。通过理论与实践相结合的方式,帮助学生全面把握这些基础概念。


1. 类与对象的基础

1.1 类的定义

在Java中,类是对象的蓝图或模板。定义类时,首先需要指定类的名称,并可以包含属性(成员变量)和方法(成员函数)。

复制代码
public class Dog {
    // 属性(成员变量)
    String name;
    int age;

    // 方法(成员函数)
    void bark() {
        System.out.println(name + " says Woof!");
    }
}

1.2 对象的创建

对象是类的实例。创建对象的过程称为实例化。Java使用new关键字来创建对象。

复制代码
public class Main {
    public static void main(String[] args) {
        // 创建 Dog 类的对象
        Dog dog = new Dog();
        dog.name = "Buddy";
        dog.age = 3;
        dog.bark(); // 输出: Buddy says Woof!
    }
}

2. 构造方法与封装

2.1 构造方法

构造方法是一种特殊的方法,在创建对象时被调用。其名称与类相同,没有返回值。

复制代码
public class Dog {
    String name;
    int age;

    // 构造方法
    public Dog(String name, int age) {
        this.name = name; // this关键字用于区分成员变量和参数
        this.age = age;
    }

    void bark() {
        System.out.println(name + " says Woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("Buddy", 3);
        dog.bark(); // 输出: Buddy says Woof!
    }
}

2.2 封装

封装是一种将数据和方法组合在一起的机制。通过访问修饰符,可以控制外部访问对象的属性,并通过公共方法对其进行操作。

复制代码
public class Dog {
    // 私有成员变量
    private String name;
    private int age;

    // 构造方法
    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 获取姓名
    public String getName() {
        return name;
    }

    // 设置姓名
    public void setName(String name) {
        this.name = name;
    }

    // 获取年龄
    public int getAge() {
        return age;
    }

    // 设置年龄
    public void setAge(int age) {
        this.age = age;
    }

    void bark() {
        System.out.println(name + " says Woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog("Buddy", 3);
        dog.bark(); // 输出: Buddy says Woof!
        System.out.println("Name: " + dog.getName());
        System.out.println("Age: " + dog.getAge());
    }
}

3. 访问修饰符与 this 关键字

3.1 访问修饰符

Java中有四种访问修饰符:public、protected、default(包访问)和private。

修饰符 同包类 子类 其他类 说明
public 是 是 是 公开, 任何地方可访问
protected 是 是 否 受保护的, 仅限子类与同包类
default 是 否 否 包访问, 仅限同包类
private 否 否 否 私有, 仅限本类

3.2 this 关键字

this 关键字指的是当前对象的引用。它用于解决命名冲突,以及在构造方法中调用另一个构造方法。

示例:
复制代码
public class Dog {
    private String name;
    private int age;

    // 构造方法
    public Dog(String name, int age) {
        this.name = name; // this关键字区分成员变量和参数
        this.age = age;
    }

    // 另一个构造方法
    public Dog(String name) {
        this(name, 0); // 通过 this 调用另一个构造方法
    }

    void bark() {
        System.out.println(name + " says Woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog1 = new Dog("Buddy", 3);
        dog1.bark(); // 输出: Buddy says Woof!

        Dog dog2 = new Dog("Max");
        dog2.bark(); // 输出: Max says Woof!
    }
}

4. 静态成员与实例成员

4.1 静态成员

静态成员属于类,而不是类的实例。可以直接通过类来访问静态变量或方法。

复制代码
public class Dog {
    private static int dogCount = 0; // 静态变量

    public Dog() {
        dogCount++; // 每次创建对象,增加计数
    }

    public static int getDogCount() {
        return dogCount; // 返回当前狗的数量
    }

    void bark() {
        System.out.println("Woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog1 = new Dog();
        Dog dog2 = new Dog();
        System.out.println("Current dog count: " + Dog.getDogCount()); // 输出: Current dog count: 2
    }
}

4.2 实例成员

实例成员属于对象,每个对象都有其独立的实例变量和实例方法。

复制代码
public class Dog {
    private String name;

    public Dog(String name) {
        this.name = name;
    }

    void bark() {
        System.out.println(name + " says Woof!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog1 = new Dog("Buddy");
        Dog dog2 = new Dog("Max");
        dog1.bark(); // 输出: Buddy says Woof!
        dog2.bark(); // 输出: Max says Woof!
    }
}

5. 总结

在本节中,我们深入探讨了面向对象编程的基本概念,包括类和对象、构造方法、封装、访问修饰符、this关键字,以及静态与实例成员。以下是关键点总结:

  • 类与对象 :类是对象的蓝图,通过new关键字实例化对象。
  • 构造方法:特殊方法,用于初始化对象的状态。
  • 封装:用访问修饰符控制对类属性的访问,增强数据隐私。
  • 访问修饰符 :public、protected、default和private,控制可见性。
  • this关键字:引用当前对象,用于解决命名冲突。
  • 静态成员与实例成员:静态成员共享于类的所有实例,实例成员独立于对象。

理解这些概念是掌握Java编程的基础,这将为后续的学习打下坚实的基础。通过实际编写代码,能够更好地理解和应用这些面向对象的原则。

相关推荐
m4Rk_6 小时前
【论文阅读】Agent 记忆机制(83):Inside Out——用可演化 PersonaTree 构建 Agent 的核心长期记忆
论文阅读·人工智能·学习·开源·github
andyweike6 小时前
php笔记
开发语言·笔记·php
EatFan6 小时前
Spring Boot 4 落地观察:从 yudao-cloud、matecloud、JPower 看国产脚手架的升级路线与迁移清单
java·spring boot·后端·spring cloud·微服务·后端开发·jdk 21
Maiko Star7 小时前
* LangChain 提示词模板详解:ChatPromptTemplate 的使用与高级特性
java·人工智能·langchain
鬓戈7 小时前
Rust 语言与 AI 应用生态调研及学习路径
人工智能·学习·rust
传奇开心果编程7 小时前
【SwiftUI娓娓道来】第3课:让界面活起来——交互与动画指南
学习·macos·ui·ios·swiftui·swift
Circ.7 小时前
Python 调试 Litellm 本地大模型接口:模型列表与对话接口实操踩坑记录
开发语言·python
xian_wwq7 小时前
【学习笔记】等保合规安全基线核查实战
笔记·学习
传奇开心果编程8 小时前
【Jetpack Compose进阶学与练】第14课:系列收尾复习总结;Compose项目常见坑点汇总;学习路线与后续学习方向
android·学习·ui·kotlin·android jetpack
yangmu32038 小时前
发动机是怎么把油变成动力的:四冲程内燃机原理拆解
学习