封装(面向对象编程三大特征之一)

本文概述了面向对象编程中的封装概念,包括封装的定义、好处、实现方式(如私有属性和公共set/get方法)以及在Java中的应用实例,还涉及了构造器的使用。

一、面向对象编程

面向对象编程有三大特征:封装、继承和多态。

二、封装

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

三、封装的好处

  1. 隐藏实现细节:方法(连接数据库) <–调用(传入参数…)
  2. 可以对数据进行验证,保证安全合理

四、封装的实现

  1. 将属性进行私有化private【不能直接修改属性】
    private只有同类可以访问,同包、子类、不同包都不可以访问。
  2. 提供一个公共(public)set 方法,用于对属性判断并赋值
	public void setXxx(类型参数名){
		//加入数据验证的业务逻辑
		属性=参数名;
	}
  1. 提供一个公共(public)get方法,用于获取属性的值
	public 数据类型 getXxx(){
		//权限判断 Xxx某个属性
		return xx;
	}

五、封装的案例

实现一个小程序(Encapsulation01.java),不能随便查看人的年龄,工资等隐私,并对设置的年龄进行合理的验证。年龄合理就设置,否则给默认年龄,必须在1-120,年龄,工资不能直接查看,name的长度在2-6字符之间。

注意事项
(1)如果要使用快捷键CTRL+R(自己设置)运行,需要先配置主类。
第一次使用鼠标点击的形式运行程序,后面就可以用
(2)手写set get太慢,用快捷键【alt + insert】
(3)数组的 length 调用不用括号,String的需要

	//如果要使用快捷键CTRL+R(自己设置)运行,需要先配置主类。
	//第一次使用鼠标点击的形式运行程序,后面就可以用
	public class Encapsulation01 {
	    public static void main(String[] args) {
	        Person person = new Person();
	        person.setName("jack");
	        person.setAge(18);
	        person.setSalary(5000.5);
	        System.out.println(person.info());
	    }
	}
	//不能随便查看人的年龄,工资等隐私,
	// 并对设置的年龄进行合理的验证,年龄合理就设置
	// 否则给默认年龄,必须在1-120,
	// 年龄,工资不能直接查看,name的长度在2-6字符之间
	class Person {
	    public String name;
	    private int age;
	    private double salary;
	
	    //手写set get太慢,用快捷键
	    // alt+insert
	
	    public String getName() {
	        return name;
	    }
	
	    public void setName(String name) {
	        if(name.length() >= 2 && name.length() <= 6) {
	            //数组的length调用不用括号,String的需要
	            this.name = name;
	        } else {
	            System.out.println("名字的长度不对,需要(2-6),默认:noname。");
	            this.name = "noname";
	        }
	    }
	
	    public int getAge() {
	        return age;
	    }
	
	    public void setAge(int age) {
	        if(age >= 1 && age <= 120) {
	            this.age = age;
	        } else {
	            System.out.println("年龄需要在合理范围内,给了默认年龄18。");
	            this.age = 18;//给一个默认值
	        }
	    }
	
	    public double getSalary() {
	        //可以这里增加对当前对象的权限判断(密码)
	        return salary;
	    }
	
	    public void setSalary(double salary) {
	        this.salary = salary;
	    }
	
	    public String info() {
	        return "信息为 name="+this.name+" age="+this.age+" salary="+this.salary;
	    }
	}

六、封装&构造器

注意事项
(1)快捷键【alt + insert】选择有参/无参构造器
(2)余额-balance

    public Person(String name, int age, double salary) {
        setName(name);
        setAge(age);
        setSalary(salary);
    }

在这里插入图片描述

本笔记是对韩顺平老师的Java课程做出的梳理。方便本人和观看者进行复习。
课程请见: https://www.bilibili.com/video/BV1fh411y7R8/?spm_id_from=333.999.0.0&vd_source=ceab44fb5c1365a19cb488ab650bab03

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值