A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 逆袭白富美 中级黑马   /  2015-7-11 23:09  /  359 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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

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


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

*/

//描述人。Person
//属性:年龄。
//行为:说话:说出自己的年龄。





/*
总结:
类中不需要对外提供的内容都私有化,包括属性和行为。

selectSort(int[] arr)
{
        swap(
}

bubbleSort(int[] arr)
{
        swap(
}

private swap(int[] arr,int a,int  b)
{
       
}

重点:以后再描述事物,属性都私有化,并提供setXxx getXxx方法对其进行访问。

*/

class Person
{
        //属性:
        private int age;//age就是被修饰为了private私有。也就是被隐藏了。这就是封装的一种体现。
        //行为:
        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;
        }

}

class PersonDemo
{
        public static void main(String[] args)
        {
                //测试Person.class。
                //创建对象。
                Person p = new Person();

                /*
                赋值-20是可以的,因为age属性是int类型,但是确不符合现实生活中的事物。
                怎么解决这个问题呢?
                不让它访问就哦了。怎么在代码上实现呢?需要使用一个Java中的关键字也是一个修饰符 private(私有,权限修饰符)
                记住:私有仅仅是封装的体现形式而已。

                */
//                p.age = -20;//age不能在person类以外的程序中直接访问了。

                //演示对age设置和获取方法的体现。
                p.setAge(-20);
                int a = p.getAge();
                System.out.println("a="+a);
//                p.speak();
        }
}

1 个回复

倒序浏览
6的没谁了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马