java 封装的概念及引入


    需求:
        学生类:
            姓名和年龄
        使用StudentDemo类测试这个学生类
        
    按照上面这个需求实现,发现一个问题,如果给学生的年龄赋值为一个非法数据,这个数据还被输出了!
    
    上面这个问题如何解决:
        1)如果年龄<0或者年龄 > 150 ,年龄是一个非法数据
        不是上面的这个范围,属于正常数据,在给年龄进行赋值
        将这个功能定义在哪里? ---->定义具体类中
        虽然说定义该功能,决绝非法数据,但是不一定使用这个功能,使用对象名.成员变量 还可以赋值非法数据
        2)第二中方案
        Java针对这种情况提供一个技术:封装;
        将类中成员变量私有化(private),对外提供公共的访问方法(权限足够大)
        私有化的成员变量:只能在本类中访问,外界不能访问!

class Student{
	
	String name;
	private int age;
	//成员方法
	public void show(){
		System.out.println("姓名:"+name);
		System.out.println("年龄:"+age);
	}
	//在提供一个方法
	public void setAge(int a){
		if(a<0 || a>150){
			System.out.println("当前年龄是个非法数据");
		}else{
			age=a;
		}
	}
}
class StudentDemo{
	public static void main(String[] args){
		//测试这个学生类
		//创建一个学生类
		Student s=new Student();
		s.show();
		s.name="张三";
		//s.age=20;
		s.show();
		System.out.println("-----------");
		/*Student s2=new Student();
		s2.name="李三";
		s2.age=-20;//非法数据
		s2.show();*/
		//改进之后:测试
		Student S2=new Student();
		s2.name="李三";
		s2.setAge(-20);
		s2.show();
		System.out.println("-----------");
		Student S3=new Student();
		s3.name="李三";
		//s3.age=-50;
		s3.show();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值