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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 啊海 中级黑马   /  2016-4-3 23:22  /  389 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


好像有一天没有更新了,今天来更新一下。那么第六天主要就是讲面向对象
一、面向对象的概述:
       什么是面向对象思想?
        是一种编程思想,面向过程强调的是过程,面向对象强调的是对象,面向对象基于面向过程
        特点:(好处)
                1、更加符合人类的思维习惯
                2、复杂问题简单化
                3、身份发生改变,执行者变成指挥者

二、面向对象的三大特征:
                封装,继承,多态

        举列子:

        反问
三、类与对象概述:
        核心概念:
                类:相关属性和行为的集合
                对象:事物的具体体现
                属性:名词,描述的是事物的特征
                        成员变量:其实和原来的定义方法一样,只不过是位置改变了,在类中方法外
                行为:动次,描述的是事物能干啥
                        成员方法:和原来一样,只不过是去掉了static
                学生类:
                        属性:姓名,年龄,身高,体重,性别
                        行为:吃饭,睡觉,学习
        类的使用:
        先创建一个对象
                类名 对象名 = new 类名();
        访问属性
                对象名.属性名
        访问方法
                对象名.方法名()
java 类名
        1、启动jvm虚拟机进程
        2、加载测试类
        3、main方法进栈
        4、Car c1
        5、在方法区中没有找到Car.class,从classpath路径中加载该类,进入方法区
        6、根据Car.class描述的信息,在堆内存中分配内存空间(地址就确定了),并赋默认的初值
        7、把对象的地址,赋值给栈内存中的引用

        两个对象:
                1、每new一次,在堆内存中就生成一个对象
                2、Car.class只加载了一次
                3、NullPointerException,你的引用如果没有指向任何对象,那么你再调用对象的方法就会报出此异常
                4、垃圾回收机制,内存中的对象没有任何引用指向他,那么他就变成了垃圾,很快就会被回收掉

        两个引用指向一个对象:
                无论你用哪个引用操作了对象,对象都会发生改变,将来你无论用哪个引用去访问对象,对象都是已经改变过的
               
四、成员变量和局部变量的区别:
        1、定义的位置不同:
                成员变量是在类中,方法外
                局部变量:在方法中或者方法声明
        2、内存中的位置不同
                成员变量:堆内存
                局部变量:栈内存

        3、生命周期不同
                成员变量:随着对象的创建而存在,随着对象的消失而消失
                局部变量:随着方法的调用而存在,随着方法的调用结束而消失

        4、初始化值不同:
                成员变量:有默认初始化值
                        整型:0
                        浮点型:0.0
                        布尔型:false
                        字符型:'\u0000'
                局部变量:没有默认的初始化值,你必须要赋值之后,才能使用


        注意事项:
                就进原则:当你的成员变量和局部变量的名字一样的时候,使用时,用的是谁?


        当形式参数是引用数据类型的时候,传递的是地址值
                Person p = new Person()
                print(p);

                public void print(Person p){
                }

        匿名对象:
                匿名调用方法,适用于,你只调用一次的时候
                匿名对象可以调用属性,并且可以赋值,但是,没有意义,因为一赋值完,这个对象就变成了垃圾

                匿名对象可以作为方法的实际参数来使用
                public void print(Person p) {
               
                }


        封装:
        隐藏对象的属性和实现细节,对外提供公共的访问方式

        好处:
                隐藏实现细节,提供公共的访问方式
                提高代码复用性
                提高安全性
        原则:
                把不需要暴露的内容隐藏起来,隐藏属性和实现细节,提供公共的访问方式

        private关键字:
                修饰成员变量,成员方法,效果:只能在本类中被访问

                getAge()
                setAge()

        封装
        this关键字:
                作用,用来区分成员变量和局部变量重名的情况

                this代表的是当前对象的引用,谁来调用我,我就代表谁

1 个回复

倒序浏览
不错不错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马