Java面向对象—封装

在学习封装之前,我们先来看一个案例

通过上面的案例我们可以发现,在创建对象时任何的年龄值都可以被赋到age中,但是用户可能会输入不合理的值,这时候就不合理,这种情况应该在赋值之前就被判断处理,这时候我们之前学过的知识点就做不到了,要用封装才可以。

面向对象三大特征之一一封装

封装的概念:

将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问

封装的两大原则:

把所有的属性藏起来,把尽可能多的东西藏起来,对外提供便捷的接口

如何实现封装:

(1)修改属性的可见性,设为private,防止错误的修改

(2)创建公有的getter和setter方法,用于属性的读写

(3)在getter和setter方法中加入属性控制语句,对属性值的合法性进行判断

package com.oop.day07;
/**
 * @author LX
 * @create 2022-10-21 11:14
 * 封装:如何实现封装
 * (1)修改属性的可见性,设为private,防止错误的修改
 * (2)创建公有的getter和setter方法,用于属性的读写
 * (3)在getter和setter方法中加入属性控制语句,对属性值的合法性进行判断
 */
public class Student1 {
    private String name;//姓名
    private int age;//年龄
    //无参构造方法
    public Student1(){}
    //全参构造方法
    public Student1(String name,int age){
        this.name=name;
        this.age=age;
    }
    //getter和setter方法
    //setter方法用来写入属性值,在该方法中可以对该值进行判断
    public void setName(String name){
        this.name=name;
    }
    //getter方法用来获取属性值
    public String getName(){
        return name;
    }
    public void setAge(int age){ //在setter中对年龄值进行判断,避免不合理的值进入
        if(age<0 || age>120){
            System.out.println("年龄值必须在0-120之间");
            this.age=1;
        }else{
            this.age=age;
        }
    }
    public int getAge(){
        return age;
    }
​
    public static void main(String[] args) {
        //调用无参的构造方法
        Student1 stu1=new Student1();
        //调用全参的构造方法
        Student1 stu2=new Student1("周润发",20);
        System.out.println("大家好,我叫"+stu2.getName()+",年龄"+stu2.getAge());
        //不合理的值也会通过构造方法进入
        Student1 stu3=new Student1("周润发",-20);
        System.out.println("大家好,我叫"+stu3.getName()+",年龄"+stu3.getAge());
        //这时候就可以通过setter方法来进行赋值,对值进行合理判断
        Student1 stu4=new Student1();
        stu4.setName("刘德华");
        stu4.setAge(-20);
        System.out.println("大家好,我叫"+stu4.getName()+",年龄"+stu4.getAge());
        //注意:创建对象是通过构造方法是对属性赋初始值,但是在改变属性值或者需要对值进行判断时,
        //就需要通过setter方法来进行赋值
        stu4.setAge(21);
        System.out.println("大家好,我叫"+stu4.getName()+",年龄"+stu4.getAge());
    }
}
  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值