黑马程序员技术交流社区

标题: 面向对象的知识点总结----1 [打印本页]

作者: 菜鸟的求学路    时间: 2015-5-21 17:43
标题: 面向对象的知识点总结----1


1.面向对象的思想:
        1).基于"面向过程的";
        2).当所要处理的数据量越来越大时,原来C语言明显支持的不够。
        3).所以才出现了面向对象的编程语言;
2.面向对象的开发流程:
        1).面向对象的分析;抽取出需要记录的"类"。一般是名词;
        2).面向对象的设计:进一步完善每个类中属性和行为,以及类和类之间的关系;
        3).面向对象的编程:写代码;
3.怎样面向对象编程:
        1).定义类;class 类名{
                   }
        2).类中只能是一些定义语句:例如:定义成员属性和成员方法;
                   class 类名{
                        //1.成员属性:[访问修饰符] 数据类型  变量名
                        private String stuName;
                        //2.成员方法:[访问修饰符] 返回值类型 方法名(形参列表)
                        void show(){
                        }
                        //不允许有其它打印、循环、判断等一些语句;
                //        System.out.println(stuName);

                   }
        3).类中的"成员方法"可以访问自己的"成员属性":
                  class Student{
                        String stuName;
                        void show(){
                                System.out.println("大家好,我叫:" + stuName);
                        }
                  }
                  main(){
                        Student stu = new Student();
                        stu.stuName = "张三";
                        stu.show();//大家好,我叫:张三
                  }
4.类的实例化:
        1).格式:类名 变量名 = new 类名();
           new关键字,将会在内存中产生一个此类的对象;
        2).当在内存中产生类对象后:
           A.对于成员变量会自动初始化:
                整数:0
                浮点:0.0
                ...

           B.成员方法,会在"方法区"开辟空间,存储方法的字节码。
        3).对于非静态的成员属性和成员方法,必须要先实例化此类对象,之后才能调用。
5.成员变量和局部变量的区别:
        1).在类中的位置不同:
                成员变量:在类体中;
                局部变量:在方法或某个其它代码块中;
        2).在内存中的位置不同:
                成员变量:堆空间
                局部变量:栈空间
        3).生命周期不同:
                成员变量:一旦所在作用域消失后,堆空间不会立即清除,会成为垃圾,后期由垃圾回收器不定期回收;
                局部变量:当所在作用域消失后,栈空间会立即清除;
        4).初始化值不同:
                成员变量:自动分配初始化值;
                局部变量:必须手动显示的赋初始值,才能访问。
6.方法的形参是"类名"的时候:
        1).方法的形参可以是基本数据类型也可以是引用数据类型;
        2).如果方法的形参是一个类名时:
                意味着它接收的是此类对象的引用
        3).调用时,一定要传递一个"引用"过去。
7.匿名对象:
        1).没有名字的对象;new 类名();
        2).因为匿名对象没有名字,所以只能使用一次;
        3).一般在如果只需要使用此对象一次时,可以使用匿名对象的方式;
                class MyMath{
                        double getPI(){
                                return 3.14159;
                        }
                }
                class Demo{
                        main(){
                        //        MyMath m = new MyMath();
                        //        double pi = m.getPI();
                                //使用匿名对象
                                double pi = new MyMath().getPI();

                        }
                }
8.封装:
        1).当我们的类的属性直接对外暴露时,是十分不安全的:
        2).此时我们可以将"成员属性"进行"私有化";
           一个类中的"成员属性"或"成员方法"被私有化后,意味着它们只能在此类的内部被访问。其它类是无法访问到的。
        3).之后要提供get或set方法读取属性值或属性设置属性值;
        4).另外,也可以将一些"成员方法"进行私有化,意味着外部不能访问私有化的方法:
                例如:class 汽车厂{
                        private void 生产方向盘(){
                        }
                        private void 生产车架(){
                        }
                        private void 生产底盘(){
                        }
                        private void 生产发动机(){
                        }
                        ...
                        汽车 组装整车(){
                                生产方向盘();
                                生产车架();
                                生产底盘();
                                生产发动机();
                                ...
                                return 汽车;
                        }
                      }
9.private关键字:
        1).是一种"访问修饰符"。
        2).在Java中访问修饰符一共有4个:private,(默认),protected,public
        3).这种访问修饰符可以修饰"成员属性"和"成员方法";
        4).被private修饰后的成员属性或成员方法意味着只能在此类的内部被访问,在
           其它类中无法访问;
作者: EggEgg    时间: 2015-5-21 18:01
路过看看,加油~
作者: 嘎嘎鸭子    时间: 2015-5-21 18:24
这些都是些比较文字性东西,单存记住很难,还是要理解面向对象核心
作者: 黑马LM    时间: 2015-5-21 19:30
总结的不错。。。。。。
作者: Mr7952    时间: 2015-5-21 19:37
感谢分享
作者: wwb1105    时间: 2015-5-21 19:39
面向对象是一种思想  重在理解
作者: xcj199106    时间: 2015-5-21 19:57
给力,感谢楼主
作者: 守株人    时间: 2015-5-21 20:54
感谢分享,学习了
作者: Melo    时间: 2015-5-21 22:17
总结的不错啊
作者: 张海旭    时间: 2015-5-21 22:46
学习了:victory:
作者: roybill    时间: 2015-5-21 22:49
总结得不错,加油!!!
作者: Lucus    时间: 2015-5-21 23:35
感谢分享,学习了!!!
作者: 黯然残影    时间: 2015-5-22 21:54
总结的很好 ,学习学习
作者: ssc911361    时间: 2015-5-22 21:56
好东西呀!!!!
作者: !85684009ex    时间: 2015-5-22 22:22
求抱大神!膜拜!
作者: !85684009ex    时间: 2015-5-22 22:27
膜拜大神!求大腿!
作者: 执剑、砍人    时间: 2015-5-22 22:33
加油加油!!!
作者: 快乐Anne    时间: 2015-5-22 22:53
总结不错
作者: 鸣人H    时间: 2015-5-22 23:01
谢谢楼主的总结 非常有用
作者: 朱吕龙    时间: 2015-5-22 23:03
真的学得好




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2