Java封装

程序场景:

一、面向对象设计的基本步骤

面向对象设计的过程就是抽象的过程,分三步走:

①发现类

根据“对象”抽象出“类”

②发现类的属性

在定义类的属性时,要根据业务需求进行定义,只放和业务相关的属性(比如说狗的毛发颜色也是狗的属性,但是跟业务需求无关,所以不需要处理)

③发现类的方法

在定义类的方法时,要根据业务需求进行定义,只放和业务相关的方法(比如说狗喝水狗的方法,但是跟业务需求无关,所以不需要处理)

二、使用类图描述面向对象设计

程序设计是一个逐步调整、完善的过程,类图是面向对象设计的“图纸”,使用“图纸”进行设计,方便了沟通和修改

Penguin        

+ name:String

+ health:int

+ love:int

+ strain:String

+ print():void

三、构造方法

  • 构造方法是一种特殊的方法,它是一个与类同名且无返回值类型的方法
  • 构造方法的功能主要是完成对象的初始化
  • 对象的创建就是通过构造方法来完成,当类实例化一个对象时,会自动调用构造方法

构造方法的特点

方法名与类名相同,没有返回值类型

构造方法的作用

初始化对象/创建对象

在没有给类提供任何构造方法时,系统会提供一个默认无参构造方法。一旦提供了自定义构造方法,系统将不再提供这个无参构造方法。如果要使用它,则必须手动添加

四、方法重载

在同一个类中,方法名相同,参数项必须不同,方法的重载跟返回值类型和修饰符无关。

方法重载的优点

方法重载其实是对一般方法的一种升级,可以根据参数的不同,采用不同的实现方法,而且不需要编写多个名称,只要记住一个方法即可。

代码演示

package com.oop.day04;

/**
 * @author: zkz
 * @datetime: 2023/12/11
 * @desc:方法重载示例
 */

public class Calculator {
    public int getResult (int num1, int num2) {
        return num1 + num2;
    }

    public double getResult (double num1, double num2, double num3) {
        return num1 + num2 + num3;
    }
    
    public double getResult (double num1, int num2) {
        return num1 + num2;
    }
}

这三个方法,方法名都一样,但是参数类型和长度不一样,所以是方法重载,但是如果参数类型一样,那么就不是方法重载

五、基本数据类型传参与引用数据类型传参的区别

  • 基本数据类型传参传的是值,前后的数据不会发生变化
  • 引用数据类型传参传的是地址,前后的数据会发生变化
  • String类型虽然也是引用数据类型,但是因为是final修饰的,因此前后的数据也不会发生变化

六、static修饰符/关键字

public static final 类型 标识符 = 值;

是否可以通过某个关键字来修饰成员变量和方法,将其变为类的成员,从而实现所有对象对于该成员的共享。

static修饰和非static修饰的区别

static、非private修饰

 非staticprivate修饰

属性

类属性、类变量

实例属性、实例变量

方法

类方法

实例方法

调用方式

类名.属性

类名.方法()

对象.属性

对象.方法()

对象.属性

对象.方法()

归属

单个对象

static总结

有static的变量叫做静态变量,没有static的变量叫做实例变量

有static的方法叫做静态方法,没有static的方法叫做静态方法

在静态方法中,没能使用静态变量,不能使用普通变量

在普通方法中,既可以使用普通变量,也可以使用静态变量

任何方法中,都不可以创建静态变量,因为方法中的变量是局部变量,两者有冲突

七、封装

封装的好处

  • 便于使用者正确使用系统,防止错误修改属性
  • 有助于系统之间的松耦合,提高系统独立性
  • 提高软件的可重用性
  • 降低了构建大型系统的风险

封装最主要是为了安全

封装的具体步骤

  1. 私有化属性
  2. 生成公有的getter/setter方法
  3. 在方法中加入逻辑判断

代码演示

package com.oop.day04;

/**
 * @author: zkz
 * @datetime: 2023/12/12
 * @desc:封装演示——类
 */

public class Dog {
    //健康值
    private int health;

    //亲密度
    private int love;

    public void setHealth(int health) {
        if (health > 100 || health < 0) {
            this.health = 60;
            System.out.println("健康值应该在0和100之间");
        } this.health = health;
    }

    public void setLove(int love) {
        if (love > 100 || love < 0) {
            this.love = 0;
            System.out.println("亲密度应该在0和100之间");
        } this.love = love;
    }

    public void show() {
        System.out.println("健康值:" + health);
        System.out.println("亲密度:" + love);
    }

}
package com.oop.day04;

/**
 * @author: zkz
 * @datetime: 2023/12/12
 * @desc:封装演示——main方法
 */

public class DogMain {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.setHealth(-1000);
        dog.setLove(60);
        dog.show();
    }
}

运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值