随笔 - 434,  文章 - 0,  评论 - 463,  阅读 - 46万

哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路!

这一节啊,咱们要学习的内容是Java的封装。

1. 什么是封装

Java的封装是指,在一个类中把一些重要的信息隐藏起来,使得外部不能直接访问。

Java的封装是一种面向对象编程技术,它把类中的属性和方法封装在一起,使外部只能通过特定的方法访问类中的属性和方法,这样可以让外部不能直接修改类中的属性和方法,从而有效控制类的内部状态。

例如,定义一个Person类,它有两个属性name和age,我们可以通过下面的代码来封装它:

public class Person{
    private String name;
    private int 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;
    }
}

在上面的代码中,将name和age属性封装在Person类中,并且为它们提供了getter和setter方法,这样外部就只能通过这些方法来获取和修改类中的属性,从而有效地控制了类的内部状态。

并且,我们给name和age属性添加了private修饰符,这样外部就不能直接操作了。你要操作name和age属性,就得去调用对应的public方法。

再举一个例子,就好比ATM机,里面的钞票属于重要信息,是私有(private)的,你无法直接看到里面有多少钱,存放在什么位置?

但是,ATM机有插卡口,出钞口,以及显示屏,这些部件就是public的方法,你通过插卡和输入密码就可以进行存取款操作。

这就是封装。

2. 如何用Java代码实现封装

就是上面的例子,分两步。

01:将属性设置为private,代表私有的。

02:设置public的get/set方法,去操作私有属性。

有快捷键可以使用,快速生成get/set方法。

在idea中:

  1. 选中要生成getter和setter方法的属性,右键选择Generate;

  2. 在Generate菜单中选择Getter和Setter;

  3. 勾选要生成的属性,点击OK即可生成getter和setter方法。

在eclipse中:

  1. 选中要生成getter和setter方法的属性,右键选择Source;

  2. 在Source菜单中选择Generate Getters and Setters;

  3. 勾选要生成的属性,点击OK即可生成getter和setter方法。

3.上一节课后作业

创建一个汽车类Car,拥有品牌brand和颜色color两个属性。分别用带参构造器和无参构造器来实例化Car类,并编写toString方法。再写一个测试类,在测试类的main方法中进行测试。

参考答案:

public class Car {
    private String brand;
    private String color;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    //无参构造器
    public Car(){
        this.brand="";
        this.color="";
    }

    //带参构造器
    public Car(String brand,String color){
        this.brand=brand;
        this.color=color;
    }

    //toString方法
    public String toString(){
        return "Car[brand="+brand+",color="+color+"]";
    }

}

测试类:

public class CarTest {
    public static void main(String[] args) {
        //使用无参构造器实例化Car
        Car car1 = new Car();
        car1.setBrand("Bmw");
        car1.setColor("White");
        System.out.println(car1.toString()); //输出:Car[brand=Bmw,color=White]

        //使用带参构造器实例化Car
        Car car2 = new Car("Benz","Black");
        System.out.println(car2.toString()); //输出:Car[brand=Benz,color=Black]
    }
}

4.课后作业

要求体现封装思想:

某ATM机有一个储蓄账户,请编写一个Java类Account,要求:

(1)定义成员变量:int balance,表示账户余额;

(2)定义构造方法,初始化账户余额;

(3)定义存钱方法void deposit(int amount),入参为存入的金额,账户余额增加amount;

(4)定义取钱方法void withdraw(int amount),入参为取出的金额,账户余额减少amount,如果余额不足,则提示“余额不足”;

(5)定义查询方法int getBalance(),返回账户余额;

posted on   剽悍一小兔  阅读(17)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2017-01-02 小兔JS教程(四)-- 彻底攻略JS数组

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示