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

来源:互联网 发布:java程序员认证培训 编辑:程序博客网 时间:2024/04/30 23:40

本篇博文最后修改时间: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方法设置和取得。

具体内容在下篇继续讲解。




1 0