黑马程序员技术交流社区

标题: 面向对象!!! [打印本页]

作者: THE_FUTURE    时间: 2014-9-27 09:43
标题: 面向对象!!!
1:对象内存图
        创建一个对象实例的过程:
        main方法执行前的准备工作:
                将类加载到内存当中
                静态区的成员(方法,属性)
        1、定义一个变量来接收一个对象实例
        2、通过new关键字在堆内存中开辟空间
        3、将成员变量默认初始化
        4、如果有静态代码块,先静态代码块。如果有构造代码块,先执行构造代码块。构造方法将成员变量进行显式初始化
        5、变量指向对象实例的内存地址
1:成员变量和局部变量的区别(理解)
        (1)定义位置区别:
                成员变量:定义在类中,方法外。
                局部变量:定义在方法中,或者方法声明上。
        (2)初始化值的区别:
                成员变量:都有默认初始化值。
                局部变量:没有默认初始化值。要想使用,必须先赋值。
        (3)存储位置区别:
                成员变量:存储在堆中。
                局部变量:存储在栈中。
        (4)生命周期区别:
                成员变量:随着对象的创建而存在。随着对象的消失而消失。
                局部变量:随着方法的调用而存在,随着方法调用完毕而消失。更严谨地说当局部变量的作用域结束时,即被销毁。

        就近原则:局部变量有,就用局部变量,局部变量没有,就找成员变量。如果成员变量也没有就报错

2:封装(理解)
        (1)隐藏实现的细节,提供公共的访问方式。
                类,方法等其实都是封装的具体体现。
        (2)private关键字
                A:用于修饰成员变量和成员方法。
                B:被修饰的内容在其他类中是不可以被访问的。
        (3)常见的应用:(掌握)
                类中的所有成员变量私有,给出对应的get/set方法。
               
                代码体现:
               
                class Student
                {
                        private String name;
                        private int age;

                        public Student(){}

                        public Student(String name,int age)
                        {
                                this.name = name;
                                this.age = 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;
                        }
                }

3:构造方法(掌握)
        用来创建实例对象
        创建同时可以给属性赋值
        (1)格式及特点
                格式:
                        访问权限修饰符        类名(参数...){}

                        访问权限修饰符:
                                public,private
                特点:
                        A:方法名和类名相同
                        B:没有返回值类型
                        C:没有具体的返回值
        (2)注意事项:
                A:如果你不给构造方法,jvm会自动给你一个无参构造方法。
                B:如果你给出了构造方法,那么,jvm将不再提供无参构造方法。
                  这个时候,你如果要使用无参构造方法:只能自己提供

                  推荐:永远手动给出无参构造方法。

4:this关键字(掌握)
        (1)是一个关键字。代表当前对象的引用。
                //简单记:在方法中,哪个对象调用方法,this就代表谁。
        (2)应用场景:
                解决局部变量隐藏成员变量问题。
                在构造方法中调用其他的构造方法(必须写在第一行)
/暂留
5:static关键字(理解)
        (1)是一个关键字。可以修饰成员变量和成员方法。
        (2)静态的特点:
                A:随着类的加载而加载
                B:优先于对象存在
                C:被类的所有对象共享
                D:可以通过类名调用
        (3)静态的注意事项:
                A:在静态方法中是没有this关键字的。
                B:静态方法只能访问静态的成员变量和静态的成员方法。
        (4)静态内容的调用:
                A:被对象调用
                B:被类名调用

                推荐被类名调用。
        (5)什么时候该用static呢?
                如果某个内容是所有对象共享的,就用静态修饰。
                举例:
                        水杯和饮水机。
                        厕所和人。
                        老师和学生。
                        对于传智学生都是热爱编程。

6:Math类的随机数(掌握)
        类名调用静态方法。
       
        包:java.lang
        类:Math
        方法:public static double random():
       
        java.lang包下的类是不用导包就可以直接使用的。

        产生1-100之间的随机数:
        int number = (int)(Math.random()*100)+1;


作者: 张周飞    时间: 2014-9-27 10:23
终结的不错!!不过还有很多地方落下了
作者: THE_FUTURE    时间: 2014-9-27 11:10
张周飞 发表于 2014-9-27 10:23
终结的不错!!不过还有很多地方落下了

有字数限制,只能拿一些大体上的发上来!!




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