面向对象封装的特性

l封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
l好处:
将变化隔离。
便于使用。
提高重用性。
提高安全性。
l封装原则:
将不需要对外提供的内容都隐藏起来。
把属性都隐藏,提供公共方法对其访问。

/*
封装:
表现:
1,函数就是一个最基本封装体。
2,类其实也是一个封装体。

从以上两点得出结论:
好处:
1,提高了代码的复用性。
2,隐藏了实现细节,还要对外提供可以访问的方式。便于调用者的使用。这是核心之一,也可以理解为就是封装的概念。
3,提高了安全性。
它也是面向对象思想的特征之一。
共有三个特征:封装,继承,多态。

举例:机箱。隐藏了办卡设备的细节,对外提供了插口以及开关等访问内部细节的方式。
*/

//描述人。Person
//属性:年龄。
//行为:说话:说出自己的年龄。
public class TestFztx {
	public static void main(String[] args) {
		//测试Person.class。
		//创建对象。
		Person p = new Person();
		/*
		赋值-20是可以的,因为age属性是int类型,但是确不符合现实生活中的事物。
		怎么解决这个问题呢?
		不让它访问就哦了。怎么在代码上实现呢?需要使用一个Java中的关键字也是一个修饰符 private(私有,权限修饰符)
		记住:私有仅仅是封装的体现形式而已。
		*/
//		p.age = -20;//age不能在person类以外的程序中直接访问了。
		p.setAge(-10);
		int a = p.getAge();
		System.out.println("a="+a);
		//p.speak();
	}
}

class Person{
	//属性
	private int age;
	//行为
	/*void speak(){
		System.out.println("age="+age);
	}*/
	/*
	年龄已被私有,错误的值无法赋值,可是正确的值也赋值不了,不行。
	咋办,按照之前所学习的封装的原理,隐藏后,还需要提供访问方式。
	通过方法的方式,让其他程序访问到,就可以了。更重要的是可以在方法中加入逻辑判断。
	
	记住:对变量的访问操作有两个动作:赋值(设置 set),取值(获取 get)
	所以,对私有的变量访问的方式就是 set变量  get变量--> setAge  getAge
	*/
	//定义对age赋值的方法。
		void setAge(int a)
		{
			//加入逻辑判断。
			if(a>0 && a<130){
				age = a;
			}else{
				System.out.println("对不起,您的年龄数值 "+a+" 是非法的。");
      			throw new RuntimeException("对不起,您的年龄数值 "+a+" 是非法的。");//异常!一旦出现,程序结束。需要修正代码。
			}
		}
		//定义一个获取age值的方法。
		int getAge()
		{
			return age;
		}
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值