学习日志,面向对象第一天(类和对象、封装、this关键字)

来源:互联网 发布:闪字风扇软件下载 编辑:程序博客网 时间:2024/05/21 16:58
第六天   
    开始学习面向对象,也预示学习要开始头疼了(重点内容)
    一,面向对象思想
        面向对象学习之前,先了解了一下面向过程,前几天学习用到的思想都属于是面向过程思想,都是在一个main方法里边创建N多个自定义方法,然后再main方法里使用自定义方法,这样的写法代码量小的话没有什么,但是代码量多的话,对于后边对代码的整理和功能的扩展都不太,面向对象更趋近于人的思想,在项目的后期维护上边也会非常方便。
       面向过程我们是具体的执行者,面向对象我们可以是指挥者。面向对象思想是从面向过程思想演变而来的。
       面向过程:煎饼:买各种材料 --- 和面 --- 起火 --- 放面 --- 放鸡蛋 --- 放葱花抹酱 --- 吃煎饼
       面向对象:找到煎饼摊老板 --- 老板来个煎饼 --- 不要煎不要饼 --- 老板把煎饼给你 --- 你吃煎饼

       万物皆对象! 
       面向对象的三个特征:封装、继承和多态
    二、类与对象及其使用
        面向对象就是讲一些有相同属性的东西封装到一起,封装的东西就是类,人可以算是一个类(人类),而人中的一个个体张三,就是人类的一个对象,一个类中可以有属性和方法,对应的现实中的人类就是人的属性和行为。类中的属性和方法称为成员属性(成员变量)和成员方法。
        类是java语言中最基本的单位。类是一组相关属性和行为的集合。
        类中的属性和方法可以和现实中的事物一一对应。
        属性:名词(变量)
        行为:动词(方法)
       学生类的代码演示:    
  1. class Student{
  2.         String name;//学生有姓名
  3.         int age;//学生有年龄
  4.         int num;//学生有学号
  5.         public void study(){//学生有学习行为(方法)
  6.                 System.out.println("学生能学习");
  7.         }
  8. }
复制代码
       对象:类的实例化就是对象,对象的抽象称为类
        创建对象:类名 对象名 = new 类名();
        可以通过对象调用类中的属性和方法:对象名.成员变量    对象名.成员方法
三:对象的内存图
        1. javac编译源码,.class文件加载到内存的方法区
        2. main方法进栈,有一个 Student s1 (栈内存)
       3. 在堆内存中创建Student的对象s1
        4. String name 默认值 null,int age 默认值 0,int number 默认值 0
        5. 将s1在堆内存中的地址赋给 Student s1 ,main方法中的s1指向堆内存中的对象
        6. 使用Student中的study方法,Student.class 文件加载到方法区
        7. study方法进栈,main中的s1把内存地址赋给study方法,方法指向堆内存的对象
       8. 方法用完以后,study方法弹栈,main方法弹栈,指向消失,堆内存中的对象被java回收机制自动回收
四、成员变量和局部变量的区别
        1. 位置不一样:成员变量在类里方法外,局部变量在方法里和方法的声明上
        2. 声明周期不一样:成员变量随着对象创建产生随着对象回收而消失,局部变量随着方法调用产生,方法弹栈而消失
        3. 初始化值不一样:成员变量系统会有默认值,局部变量需要自己初始化,如果不初始化会编译错误
                                        byte short int long 默认值 0
                                        float double 默认值 0.0
                                        char 默认值 '\u0000'
                                        boolean 默认值 false
                                        其他引用类型 默认值 null
       4. 在内存中的位置不一样:成员变量在堆内存,局部变量在栈内存。
        注意:局部变量和成员变量名字相同时,采用就近原则
五:匿名对象:没有名字的对象,只能使用一次,是作为实际参数传递的
六:封装(private)
        属性私有化,对外提供set和get方法
        属性私有, 可以在类里进行安全验证,提高代码的安全性和健壮性
        封装原则:将不需要对外提供的内容隐藏起来,属性隐藏,提供公共方法
        被private修饰的成员只能在本类中才能访问
七、this关键字
        this关键字目前了解的不是特别清除
        方法被哪个对象调用,this就代表那个对象,在set方法上,如果参数和属性名一样,要使用this.
       
0 0
原创粉丝点击