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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sk120110 中级黑马   /  2014-7-4 12:55  /  1177 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如何学习和理解面向对象呢?面向对象不好学,那怎么才能正确学习面向对象呢?大家都是怎么学习的?

2 个回复

倒序浏览
怎么着才能让我们更符合面向对象的思想?
a:找类
b:类有什么
c:类与类的关系
回复 使用道具 举报
这是我学习面向对象第一天的总结,我又做了下解释希望会对你有所帮助
1:面向对象(理解)
        (1)是相对应面向过程而言的,基于面向过程的一种编程思想。
        (2)思想特点:
                A:更符合我们思考习惯的思想。
                B:把复杂的简单化。
                C:把我们从执行者变成了指挥者。(角色转换)
        (3)举例:
                A:买电脑//自已买,得看品牌,找特点,跑路找门店,是面向过程,交给对象去办,就是面向对象
                B:吃饭//自已买菜做饭乘饭,是面向过程,交给老婆去做饭端上来吃,是面向对象,老婆是对象
                C:洗衣//自己脱了洗,搓,晾,是面向过程,交给老婆去做是面向对象
                ...
        (4)把大象装进冰箱的案例分别使用面向过程和面向对象体现
                A:面向过程//这一个类自己干了这些事情
                        class Demo {
                                public static void main(String[] args) {
                                        open();
                                        in();
                                        close();
                                }

                                public static void open() {
                                        System.out.println("开门");
                                }

                                public static void in() {
                                        System.out.println("进去");
                                }

                                public static void close() {
                                        System.out.println("关门");
                                }
                        }

                B:面向对象
                       
                        class 大象 {
                                public void in() {
                                        System.out.println("进去");
                                }
                        }

                        class 冰箱 {
                                public void open() {
                                        System.out.println("开门");
                                }

                                public void close() {
                                        System.out.println("关门");
                                }
                        }

                        class 测试类 {//把测试类看成指挥者,通过另外两个类创建的对象去做事情就是面向对象
                                public static void main(String[] args) {
                                        冰箱 b = new 冰箱();
                                        大象 d = new 大象();

                                        b.open();
                                        d.in();
                                        b.close();
                                }
                        }

2:类与对象的关系(理解)
        (1)编程语言都是为了把现实世界的事物给描述出来的。
        (2)现实世界的事物体现:
                特征:外在的描述
                行为:内在的行为
        (3)Java语言的最基本单位:类
                类和事物的转换:
                        事物:
                                特征:外在的描述
                                行为:内在的行为
                        类:
                                成员变量
                                成员方法
        (4)类:是一组相关的属性和行为的抽象。
        (5)对象:是该类事物的具体存在的个体。也叫做实例。
                举例:
                        类:学生
                        对象:班长

3:如何写一个类和使用一个类的成员(掌握)
        (1)先把要描述的事物通过特征和行为体现。
           然后把该行为和特征体现为类的成员变量和成员方法。
        (2)类:
                成员变量:在类中方法外的变量。
                成员方法:就是没有static的函数。
        (3)案例:
                学生类
                手机类
        (4)使用一个类:
                A:在一个java文件中,可以写多个类。
                  但是,要求文件名和带main方法的那个类名相同。
                B:如何使用:
                        创建对象:类名 变量名 = new 类名();
                                  这个变量名其实就是一个对象。
                        使用成员:
                                成员变量:对象名.变量名;
                                成员方法:对象名.方法名();
        (5)测试案例:
                学生测试类
                手机测试类

4:匿名对象(理解)
        (1)没有名字的对象。
        (2)应用场景:
                A:(掌握) 调用方法只有一次的时候。
                B:可以作为实际参数传递。
       
5:成员变量和局部变量的区别?(掌握)
        (1)在类中的位置不同
                成员变量:在类中,方法外。
                局部变量:在方法内或者方法的形式参数。
        (2)在内存中的位置不同
                成员变量:在堆内存
                局部变量:在栈内存
        (3)生命周期不同
                成员变量:随着对象的创建而存在,随着对象的消失而消失。
                局部变量:随着方法的调用而存在,随着方法的调用完毕而消失。
        (4)初始化值的不同
                成员变量:有默认初始化值。
                局部变量:没有默认初始化值。

6:一个变量到底该不该定义为成员变量。(掌握)
        (1)如果变量和类有关系,就应该定义为成员变量。
        (2)案例:
                //变量和类没有关系
                class Demo {
                        public int compare(int a,int b){
                                return a==b;
                        }
                }

                //变量和类有关系
                class ChangFangXing {
                        int chang;
                        int kuan;

                        public int zhouChang() {
                                return 2*(chang+kuan);
                        }

                        public int area() {
                                return chang*kuan;
                        }
                }

7:封装(理解)
        (1)隐藏实现细节,提供公共的访问方式。
        (2)封装的体现:
                private修饰成员变量。
                类或者方法本身也是封装。
        (3)写代码的标准做法:(掌握)
                成员变量用private修饰。
                提供对应的getXxx()/setXxx()方法。

8:this关键字(掌握)
        (1)代表当前类的引用对象。谁调用它代码代表谁。
        (2)应用场景:
                解决局部变量隐藏成员变量值的问题。
        (3)标准代码:
                class Student {
                        private String name;
                        private int age;

                        public void setName(String name) {
                                this.name = name;
                        }

                        public String getName() {
                                return name;
                        }

                        public void setAge(int age){
                                this.age = age;
                        }

                        public int getAge() {
                                return age;
                        }
                }

                //测试类
                class StudentDemo {
                        public static void main(String[] args) {
                                Student s = new Student();

                                s.setName("林青霞");
                                s.setAge(27);

                                System.out.println(s.getName()+"---"+s.getAge());
                        }
                }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马