java面向对象-封装private

来源:互联网 发布:win10防火墙设置21端口 编辑:程序博客网 时间:2024/06/05 08:37
理解面向对象1,面向对象是相对面向过程而言2,面向对象和面向过程都是一种思想3,面向过程    3.1强调的是功能行为4,面向对象    4.1将功能封装进对象,强调具备了功能的对象5,面向对象是基于面向过程的 面向对象:    三个特征:封装,继承,多态          //以后开发:其实就是找对象使用。没有对象,就创建一个对象 //找对象,建立对象,使用对象。维护对象的关系 /*类和对象的关系 现实生活中的对象:张三 李四。想要描述:提取对象中共性内容。对具体的抽象描述时:这些对象的共性有:姓名,年龄,性别,学习java的功能 映射到java中,描述就是class定义的类具体对象就是对应java在堆内存中用new建立实体 类就是:对显示生活中事物的描述对象:就是这类事物,实实在在存在的个体*/  //需求:描述汽车(颜色,轮胎数)。描述事物其实就是在描述事物的属性和行为 //属性对应是类中变量,行为对应的类中的函数(方法);//其实定义类,就是在描述事物,就是在定义属性和行为。属性和行为共同成为类中的成员(成员变量和成员方法) /*成员变量和局部变量 作用范围:成员变量作用于整个类中。局部变量变量作用于函数中,或者语句中 在内存中的位置:成员变量:在堆内存中,因为对象的存在,才在内存中存在局部变量:存在栈内存中 */ /*人开门:名词提炼法。 人{    开门(门)    {        门.开();    }} 门{    开(){操作门轴等}}*/class Car(){    //描述颜色    String color = "红色";    //描述轮胎数    int num = 4;         //运行行为    void run()    {        System.out.println(color+".."+num);    }     } class CarDemo{    public static void main(String[] args)    {        //生产汽车。在java中通过new操作符来完成        //其实就是在堆内存产生一个实体        Car c = new Car();        //c就是一个类类型变量。记住:类类型变量指向对象                 //需求:将已有车的颜色改成蓝色。指挥该对象做使用。在java指挥方式是:对象。对象成员        c.color = "blue";                 c.run();                 Car c1 = new Car();                 c1.run();//red 4    }}  ------------------------------------------------匿名对象1,匿名对象是对象的简化形式2,匿名对象两种使用情况    2.1当对对象方法仅进行一次调用的时    2.2匿名对象可以作为实际参数进行传递 匿名对象使用方式一:当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化如果对一个对象进行多个成员调用,必须给这个对象起个名字 匿名对象使用方式二:可以将匿名对象作为实际参数进行传递 //需求:汽车修配厂。对汽车进行改装,将来的车都改成黑色,三个轮胎public static void show(Car c){    c.num = 3;    c.color = "black";    c.run();} 封装(Encapsulation)封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式好处:    1,将变化隔离    2,便于使用    3,提高重用性    4,提高安全性封装原则:    1,将不需要对外提供的内容都隐藏起来    2,把属性都隐藏,提供公共方法对其访问 private:私有,权限修饰符:用于修饰类中的成员(成员变量,成员函数)私有只在本类中有效 将age私有化以后,类以外即使建立了对象也不能直接访问。但是人应该有年龄,就需要在Person类中提供对应访问age的方式 注意:私有仅仅是封装的一种表现形式 之所以对外提供访问方式,就因为可以在访问方式中加入逻辑判断等语句对访问的数据进行操作,提高代码健壮性 class Person{    private int age;    public void setAge(int a)    {        if(a>0 && a<130)        {              age = a;            speak();        }        else            System.out.println("feifa age");    }    public int getAge()    {        return age;    }    void speak()    {        System.out.println("age="+age);    }} class PersonDemo{    public static void main(String[] args)    {        Person p = new Person();                 //p.age = -20;        p.setAge(-40);        //p.speak();    }}

0 0
原创粉丝点击