3.5 面向对象的特征之一:封装和隐藏(JAVASE Chapter3 面向对象)

在介绍封装和隐藏前,先复习一下两个属性修饰符的用法:

  1. public:该属性可以被该类及该类以外的方法访问。
  2. private:该属性只能由该类的方法访问。

JAVA的使用者对类内部定义的属性(对象的成员变量)的直接操作会导致数据的错误、混乱或安全性问题。

我们先来看这样一段代码:

定义一个Person类,设置age属性和printAge方法

public class Person{
	public int age;
	
	public void printAge(){
			System.out.println("年龄是" + age);
	}
}	

Test program调用Person类

public class Test{
	public static void main(String[]args){
		Person p = new Person();
		
		p.age = -80;
		p.printAge();
	}
}{这个program输出结果为:"年龄是-80"}

这个program是可以正常运行的。但是输出结果:年龄是-80.显然是不符合正常逻辑的。
这种情况下就需要对代码进行封装处理。

下面来看一下如何对上述Person类的属性age进行封装。

这里利用private关键字使得其他类无法调用此处的属性。再利用setAge这个方法对age属性进行大小限制

public class Person{
	private int age;
	
	public void printAge(){
			System.out.println("年龄是" + age);
	}public int getAge(){
			return age;
	}public void setAge(int a){
		if(a>=0 && a<=150){
			age = a;
		}else{
			System.out.println("输入的年龄"+a+"不在0~150之间");
		}
	}
	
}	

这里的Test类只对Person类的方法进行了调用

public class Test{
	public static void main(String[]args){
		Person p = new Person();

		p.setAge(-150);
		p.getAge();
		p.printAge();
	}
}{输出结果为:“输入的年龄:-150  不在0-150之间
年龄是:0}

Java中通过将数据声明为private,再提供public方法:getXxx()和setXxx()实现对该属性的操作,以实现下述目的:

  • 隐藏一个类中不需要对外提供的实现细节;
  • 使用者只能通过事先制定好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作;
  • 便于修改、增强代码的可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值