卷Java面向对象

本文介绍了Java中的封装、继承和多态概念,通过BankAccount类的封装、Person和Student类的继承以及Animal和其子类Dog、Cat的多态实例,展示了面向对象编程的核心特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 封装

我们定义一个银行账户类Account,其中包含私有的属性balance表示账户余额,以及一些公共的方法如deposit(存款)、withdraw(取款)等。同时,我们还可以在Account类中添加一些保护的方法,如checkBalance()用于检查账户余额是否充足等。

public class Account {
    private double balance; // 私有属性balance表示账户余额

    // 公共方法,用于存款
    public void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
        } else {
            System.out.println("存款金额必须大于0!");
        }
    }

    // 公共方法,用于取款
    public void withdraw(double amount) {
        if (amount > balance) {
            System.out.println("余额不足,无法取款!");
        } else if (amount <= 0) {
            System.out.println("取款金额必须大于0!");
        } else {
            balance -= amount;
        }
    }

    // 保护方法,用于检查账户余额是否充足
    protected boolean checkBalance(double amount) {
        return balance >= amount;
    }
}

2. 继承

我们定义一个人类Person,其中包含一些基本属性如姓名、年龄等。然后我们定义一个学生类Student,继承自Person类,并添加自己的属性如学号、班级等。同时,学生类还可以覆盖父类的sayHello()方法,以实现自己特定的打招呼方式。

public abstract class Person {
    private String name; // 姓名
    private int age; // 年龄

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

    // 公共方法,用于打印个人信息
    public void printInfo() {
        System.out.println("姓名:" + name + ",年龄:" + age);
    }
}

public class Student extends Person {
    private String studentId; // 学号
    private String className; // 班级

    // 构造方法
    public Student(String name, int age, String studentId, String className) {
        super(name, age);
        this.studentId = studentId;
        this.className = className;
    }

    // 重写父类的sayHello()方法
    @Override
    public void sayHello() {
        System.out.println("大家好,我是" + name + ",今年" + age + "岁,我的学号是" + studentId + ",我在" + className + "班。");
    }
}

3. 多态

我们定义一个动物类Animal,其中包含一个叫声方法makeSound()。然后我们定义两个子类Dog和Cat,分别实现自己的叫声方法。当我们调用Animal类的makeSound()方法时,系统会根据实际对象的类型来动态地选择对应的方法实现。

public abstract class Animal {
    // 叫声方法
    public abstract void makeSound();
}

public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("汪汪汪!");
    }
}

public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("喵喵喵!");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Dog(); // 实例化Dog对象
        myAnimal.makeSound(); // 输出:汪汪汪!

        myAnimal = new Cat(); // 实例化Cat对象
        myAnimal.makeSound(); // 输出:喵喵喵!
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值