黑马—private关键字-封装

本文详细介绍了在Java中如何使用private关键字进行成员变量的封装,通过提供getXxx()和setXxx()方法来确保数据的安全性和正确性。文章通过学生类的例子,展示了如何限制年龄字段的合法范围,避免了直接访问成员变量可能带来的安全问题。

private最常见的应用:

1、把成员变量用private修饰
2、提供对应的getXxx()/setXxx()方法
3、一个标准的案例的使用

直接访问存在安全问题

package blackHorse;
/*
 * 学生类
 * 
 * 通过对象直接访问成员变量,会存在安全问题
 * 这个时候,我们就想能不能不让外界的对象直接访问成员变量呢?
 * 能。
 * 如何实现呢?
 *     private关键字!
 */
public class Student {
	String name;
	int age;
	
	public void show() {
		System.out.println("姓名是:" + name + ";年龄是:" + age);
	}
}
package blackHorse;
/*
 * 学生测试类
 */
public class studentTest {
	
	public static void main(String[] args) {
		Student garen = new Student();
		garen.show();
		
		garen.name = "盖伦";
		//garen.age = 28;
		garen.age = -28;
		garen.show();
	}
}

在这里插入图片描述

public void setAge(int a1) {
		age = a1;
	}

garen.setAge(-28);

在这里插入图片描述

package blackHorse;
/*
 * 学生类
 * 
 * private:
 * 		是一个修饰符
 * 		可以修饰成员变量,也可以修饰成员方法
 * 		被private修饰的成员只能在本类中被访问
 * 
 * 针对private修饰的成员变量,我们会相应的提供getXxx()和setXxx()用于获取和设置成员变量的值,方法用public修饰
 *	not visible
 *
 *在setAge()方法里判断年龄的范围,看是否有误,再决定是否输出。
 */
public class Student {
	String name;
	//int age;
	private int age;
	
	public void show() {
		System.out.println("姓名是:" + name + ";年龄是:" + age);
	}
	//setAge()方法
	public void setAge(int a1) {
		if(a1<0 || a1 >200) {
			System.out.println("你给的年龄有误");
		}else {
			age = a1;
		}
		
	}
	
	public int getAge() {
		return age;
	}
}
package blackHorse;
/*
 * 学生测试类
 */
public class studentTest {
	
	public static void main(String[] args) {
		Student garen = new Student();
		garen.show();
		
		garen.name = "盖伦";
		//garen.age = 28;
		//garen.age = -28;//not visible
		garen.setAge(-28);
		//garen.setAge(28);
		//garen.getAge();//获取初始值
		garen.show();
	}
}

在这里插入图片描述

成员变量私有的标准代码(封装)

  • 学生类

    1.成员变量私有化
    2.分别写出他们的set,get方法()
    3.set方法里做了判断

  • 学生测试类

    1.创建对象
    2.get方法得到默认值,set方法赋值
    3.赋值后再用get方法得到现在的值

package blackHorse;
/*
 * 学生类。
 */
public class Student {
	private String name;
	private int age;
	
	public void setName(String n) {
		name = n;
	}
	
	public String getName() {
		return name;
	}
	
	public void setAge(int a) {
		age = a;
	}
	
	public int getAge() {
		return age;
	}
}
package blackHorse;
/*
 * 学生测试类
 */
public class studentTest {
	public static void main(String[] args) {
		//创建对象
		Student s = new Student();
		//因为没有赋值,所以得到默认值。
		System.out.println(s.getName()+"---"+s.getAge());
		
		s.setName("urnotbear");
		s.setAge(20);
		//第二次进行了赋值,所以get方法得到有值。
		System.out.println(s.getName()+"---"+s.getAge());
	}
}

在这里插入图片描述

封装原则:
1.将不需要对外提供的内容都隐藏起来
2.把属性隐藏,提供公共方法对其访问
—成员变量private,提供对应的getXxx()和setXxx()方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值