黑马程序员技术交流社区

标题: 【绝对自己总结】Java基础复习——第三章 面向对象(1) [打印本页]

作者: li6232876    时间: 2016-5-18 22:57
标题: 【绝对自己总结】Java基础复习——第三章 面向对象(1)
第三章 面向对象
3.1 面向对象特征:
封装(encapsulation)、继承(inheritance)、多态(polymorphism)
3.2 局部变量和成员变量的区别
区别
成员变量
局部变量
类中的位置不同
在类中方法外
在方法定义中或者方法声明上
内存中的位置不同
在堆内存(成员变量属于对象,对象进堆内存)
在栈内存(局部变量属于方法,方法进栈内存)
生命周期不同
随着对象的创建而存在,随着对象的消失而消失
随着方法得调用而存在,随着方法得调用完毕而消失
初始化值不同
有默认初始化值
没有默认初始化值,必须定义;赋值,单后才能使用
注意事项
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则.
3.3 基本数据类型参数及引用数据类型参数传递
示例1:基本数据类型参数传递
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps18BD.tmp.pngclass Demo  {
        public static void main(String[] args){
                        int x = 3;
           show(x);
        System.out.println("x=" + x);
        }
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps18CE.tmp.png        public static void show(int x){
                x = 4;
        }
}
说明:
main方法打印x的值时。此时x指的是main方法中的x变量的值(show方法中的参数x已经随show方法一块出栈了)。所以,打印出来的x值为3而不是4。
示例2:引用数据类型参数传递
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps18DE.tmp.pngclass Demo {
        int x = 3;
        public static void main(String[] args){
                        Demo d = new Demo();
                        d.x = 9;
                        show(d);
                        System.out.println(d.x);
        }
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps18DF.tmp.png        public static void show(Demo d){
                        d.x = 4;
        }
}
执行过程说明:
    show方法执行d.x=4后,堆内存中的实体对象的x属性值变为4。show方法执行结束,show方法出栈,show方法参数d也随之出栈。虽然show方法参数d出栈了,但是,由于main方法的变量d依然引用着堆内存中的实体对象,因此堆内存中的实体对象不会被垃圾回收器清除。而main方法打印d.x的值。此时,d指的是main方法中的引用变量x,d.x指的依然是堆内存中的实体对象中x的值。所以,打印出来的值为4而不是9。
3.4 匿名对象的应用场景:
答:①仅一次调用; ②当做参数传递;
3.5 构造函数的作用及构造方法的格式特点:
答:(1)作用:给对象的数据(属性)进行初始化。
    (2)构造方法格式特点:
              ①方法名与类名相同(大小也要与类名一致);
              ②没有返回值类型,连void都没有;
              ③没有具体的返回值return。
3.6 一般函数和构造函数什么区别呢?
答:(1)构造函数:对象创建时,一创建就会调用与之对应的构造函数,并且只调用一次,对对象进行初始化。
 (2)一般函数:对象创建后,需要函数功能时才调用,并且可以被调用多次






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