您的位置:首页 > 编程语言 > Java开发

【JAVA】35、面向对象的封装性(上)

2016-03-10 12:54 351 查看
本篇博文最后修改时间:2016年3月10日,12:55。



一、简介

本篇介绍面向对象的封装性。

二、实验平台

系统版本:Windows7 家庭普通版 32位操作系统。

三、版权声明

博主:思跡

声明:喝水不忘挖井人,转载请注明出处。

原文地址:http://blog.csdn.net/omoiato

联系方式:315878825@qq.com

Java零基础入门交流群:541462902

四、面向对象的封装性

范例1:观察以下程序的问题

class Person
{
String name;					//声明姓名属性
int age;						//声明年龄属性
public void tell()				//取得信息的方法
{
System.out.println("姓名:" + name + "年龄:" +age);
}
}
public class EncDemo01
{
public static void main(String[] args)
{
Person per = new Person();	//声明并实例化对象
per.name = "张三";		         //为name属性赋值
per.age = -30;				//为age属性赋值
per.tell(); 				//调用方法
}
}
程序运行结果:



观察发现:

1、运行结果:-30岁不合理,类中声明属性时,应该设置条件。

2、对象直接访问类中的属性,这在面向对象法则中是不允许的。

为此,在一般的开发中往往要将类中的属性封装(private)

使用封装性格式:

为属性封装:private 属性类型 属性名称;
为方法封装:private 方法返回值 方法名称(参数列表)
{
...
}


范例2:为程序加上封装属性

class Person
{
private String name;					//声明姓名属性
private int age;						//声明年龄属性
public void tell()				//取得信息的方法
{
System.out.println("姓名:" + name + "年龄:" +age);
}
}
public class EncDemo02
{
public static void main(String[] args)
{
Person per = new Person();	//声明并实例化对象
per.name = "张三";		       //为name属性赋值
per.age = -30;				//为age属性赋值
per.tell(); 				//调用方法
}

}
程序运行结果:







范例1与范例2的区别在于关键字private,加入该关键字后,原程序无法编译。

这是因为private对属性进行了封装,所以不能由对象直接访问。

有了private后,就可以保证对象无法直接访问类的属性。

为了解决属性必须封装,又必须访问的矛盾,便需要用到setter和getter方法设置和取得。

具体内容在下篇继续讲解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: