0
点赞
收藏
分享

微信扫一扫

java 封装的概念及引入

玉新行者 2022-03-20 阅读 38
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();
	}
}
举报

相关推荐

0 条评论