Skip to content

面向对象编程

字数
1499 字
阅读时间
7 分钟

Java 就是一门典型的面向对象语言。

面向对象编程是一种编程思想,它把现实世界中的事物抽象成“对象”来处理程序逻辑。

核心思想: 万物皆对象:现实世界中的一切都可以看作是“对象”。 通过对象之间的交互完成任务。

关键词含义
类(Class)是对象的模板,定义了对象的属性和行为
对象(Object)是类的具体实例,每个对象都有自己的数据
属性(Field / Property)描述对象的状态,如学生的姓名、年龄
方法(Method)描述对象的行为,如打招呼、吃饭等

什么是对象?

  • 万物皆可对象,谁的数据谁储存 对象也就是一种特殊的数据结构。用类new出来,有了类就可以创造出对象。
对象是类的具体实例
js
public class 类名{
	1.变量说明对象可以处理什么数据
	2.方法描述对象具有什么功能也就是可以对数据进行什么处理
}

比如一辆汽车(Car),它有: 属性(特征):品牌、颜色、速度 行为(功能):启动、加速、刹车 在 Java 中,我们就可以把这个“汽车”抽象成一个对象,并描述它的属性和行为。

对象在计算机中具体算什么?

在计算机中,对象的一个实例,它存在于内存中,有自己的数据(属性)和方法(行为)。 你可以把它想象成一个盒子,这个盒子里装着一些变量(属性)和一些函数(方法)

什么是类(Class)?

类是对一类具有相同特征的对象的模板蓝图。 继续用“汽车”的例子: Car是一个类(Class) 它描述了所有汽车共有的属性(如品牌、颜色)和行为(如启动、加速) 每一辆具体的车(比如宝马、特斯拉)就是 Car 类的一个对象(Instance)

注意

同一个文件中最多只能有一个公共类,且该公共类的文件名必须与类名相同 Product Java→Product

简单练习

1.写一个简单的 Java 程序,模拟“学生”这个对象。

定义一个类 Student
js
// Student.java
public class Student {
    // 属性(成员变量)
    String name;
    int age;

    // 方法(成员方法)
    public void sayHello() {
        System.out.println("大家好,我叫" + name + ",今年" + age + "岁。");
    }
}
创建对象并使用
js
// Main.java
public class Main {
    public static void main(String[] args) {
        // 创建一个 Student 对象
        Student student1 = new Student();

        // 给对象设置属性值
        student1.name = "小明";
        student1.age = 15;

        // 调用对象的方法
        student1.sayHello();  // 输出:大家好,我叫小明,今年15岁。
    }
}

2.设计一个book类

🎯要求:

  • 属性:书名(title)、作者(author)、价格(price)
  • 方法:showInfo() 显示书的信息
定义book类
js
public class Book {
    String title;
    String author;
    double price;

    public void showInfo() {
        System.out.println("书名:" + title);
        System.out.println("作者:" + author);
        System.out.println("价格:" + price);
    }
}
定义book类
js
public class Main {
    public static void main(String[] args) {
        Book book1 = new Book();
        book1.title = "Java从入门到放弃";
        book1.author = "小明";
        book1.price = 69.9;

        book1.showInfo();
    }
}

3.设计一个银行账户类

🎯要求:

  • 属性:账户名(owner)、余额(balance)
  • 方法:方法:deposit(double amount) 存款、withdraw(double amount) 取款(如果余额足够)、checkp() 查看余额
定义银行账户类
js
public class bankaccount{
	string owner;
	double balance;

	public void deposit(double amount){
		balance += amount
		System.out.println("Success, 当前余额:" + balance);
	}
 public void withdraw(double amount) {
        if (amount <= balance) {
            balance -= amount;
            System.out.println("取款成功,当前余额:" + balance);
        } else {
            System.out.println("余额不足!");
        }
    }

    public void checkBalance() {
        System.out.println(owner + " 的账户余额为:" + balance);
    }
}
定义银行账户类
js
public class Main {
    public static void main(String[] args) {
        BankAccount account = new BankAccount();
        account.owner = "臻宝";
        account.balance = 1000;

        account.checkBalance();  // 当前余额
        account.deposit(80000);    // 存款
        account.withdraw(200);   // 取款
    }
}

常见类

String

String 是一个非常重要的类,用于表示和操作字符串。

它是 Java 标准库中 java.lang 包的一部分,因此在使用时无需手动导入。

简单定义

js
String name = "Hello, Java";

常见的构造方法

构造方法示例说明
String()new String()创建空字符
String(String original)new String("abc")拷贝已有字符
String(char[] value)new String(new char[]{'a','b','c'})从字符数组构建
String(byte[] bytes)new String("abc".getBytes())从字节数组构建

不可变性详解

js
String s = "hello";//String是不可变的对象
s = s + " world"; // 实际上是创建了一个新的字符串对象

原始字符串 "hello" 并没有被修改; 新字符串 "hello world" 被创建,并赋值给 s。 如果需要频繁修改字符串内容,推荐使用 StringBuilder 或 StringBuffer。

小例子:统计字符出现次数。
js
public class CharacterCounter {
    public static void main(String[] args) {
        // 定义一个字符串和要查找的字符
        String input = "abracadabra";
        char target = 'a';

        // 调用方法统计字符出现次数
        int count = countCharacter(input, target);

        // 输出结果
        System.out.println("字符 '" + target + "' 出现了 " + count + " 次");
    }

    /**
     * 统计指定字符在字符串中出现的次数
     */
    public static int countCharacter(String str, char ch) {
        int count = 0; // 初始化计数器

        // 遍历字符串中的每一个字符
        for (int i = 0; i < str.length(); i++) {
            // 如果当前字符等于目标字符,计数器加一
            if (str.charAt(i) == ch) {
                count++;
            }
        }

        // 返回最终统计结果
        return count;
    }
}

贡献者

撰写