JAVA 面向对象——封装(韩顺平)

一.封装

1.基本介绍

封装(encapsulation)就是把抽象出的数据(属性)和对数据的操作(方法)封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作,才能对数据进行操作

简而言之,就是对数据加以限制或进行保护,比如,需要调取对象private属性,可以通过设置验证码,对数据进行保护

2.封装的优点

1)隐藏实现细节

2)可以对数据进行验证,保证安全合理

3.封装实现的步骤(三步)

1)将属性进行私有化private(不能直接修改属性)

2)提供一个公共的(public)set方法,对属性进行判断和复制

public void setXxx (类型,参数名){Xxx 表示某个属性

加入数据验证或对数据进行赋值

属性 = 参数名}

3)提供一个公共的(public)get方法,用于获取属性的值

public 数据类型 getXxx(){权限判断,Xxx某个属性

return xx;}

4.入门案例

不能随便查看工人的年龄,工资的隐私,并对设置的年龄进行合理的验证,年龄必须在0——120,名字长度2——6,工资不能直接查看

package 面向对象中级;

import java.util.Scanner;

public class encap{
    public static void main(String[] args) {

        Person person = new Person();

        person.setName("jack");
        person.setAge(30);
        person.setSalary(30000);


        System.out.println("请输入验证码查看工资");
        Scanner myscanner = new Scanner(System.in);
        int n = myscanner.nextInt();
     
        System.out.println(person.info(n));//验证码输入为123456时可以访问工资

    }
}


class Person{
    //封装
    public String name;
    private int age;
    private double salary;
    private String job;

    //怎么在主类给age salar 初始化
    public void setName(String name){
        if (name.length() >= 2 && name.length() <= 6) {
            this.name = name;
        }else {
            System.out.println("名字长度不对");
        }
    }
    public String getName(){
        return name;
    }//快捷键ALT + insert

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        //判断
        if (age >= 1&& age <= 120) {
            this.age = age;
        }else {
            System.out.println("年龄需在0——120,默认年龄10");
            this.age = 10;//给一个默认年龄
        }
    }

    public double getSalary(int n) {
        if (n == 123456) {
            return salary;
        }else{
            System.out.println("你的权限不够");
            return 0.0;
        }
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    //
    public String info(int n){
        return "信息为 name=" + name + " age="+age+" salary="+getSalary(n);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值