面向对象编程OOP
OOP:java的核心思想,Object-oriented programming
OOD:面向对象设计
OOA:面向对象分析
面向对象这块的点
面向对象是啥?
面向对象实际是和面向过程相对的,重点理解面向对象的思想。
面向对象的思想:思考问题首先会考虑解决这个问题需要哪些分类。(我在思考前端的入参的时候,目前也是采取面向对象的思想,会把前端的入参封装成几个类,就连查询相关的也是封装了类)
面向对象编程的本质:以类的方式组织代码,以对象的方式组织数据
因此,我们说java其实还挺好入门的,因为基本我明确完需求,定义好所需的类,接下来就是用对象组织数据进行业务的开发了
啊,时隔一天我又回来了,本来计划今天拿出2小时学会习的,结果我发现我越看java越困。。。。。。。我还是学点别的吧,因为现在公司内部数据量较大,而作为一名合格的后端开发者,我还是需要会一点关于大数据的知识的。
时隔几天,我大概学习了一下大数据的知识,当然我掌握的也只是个皮毛哈。
大概学了一下大数据相关的知识:从数据单位、对大数据的了解,再到大数据仓库,再到Hadoop(HDFS/MapReduce),再到HIVE哈哈哈,也只能算是大数据入了个门哈。大数据这块其实还是对他有些自己的见解的。另外关于HIVE这里,其实也就是数据仓库下的类sql产物,利用HIVE可以建表、了解HIVE SQL等等,利用HIVE生成mapreduce任务从而获取hdfs数据
接下来,我要再去学习java的基础啦。基础很重要,还是要好好学的!
话不多说,接着学。
对象的创建和初始化(分配内存,内存中变量赋值)
对象的创建方式:new---分配内存的关键。
对象的初始化:通过构造方法完成对象的初始化,hahha,另外的话还有初始化块哦(静态初始化块、普通初始化块的加载时间不同哦,但是都是对对象的初始化工作做了一定的努力哦)
我们创建后类之后,我们创建对象。一个简单的new背后,我们要get到三个点:
构造方法-对象初始化的关键
关于java的构造函数这里还是需要明确一下
java文件和class文件的区别
最近又看了.java文件和.class文件。我们一直强调java源码经编译后生成java字节码,但是有没有关心过这两个文件的潜在关系呢。
其实我们可以写一个.java文件,然后编译,将生成的.class文件和源文件对比下,这个时候你会发现你的注解,包括一些隐式构造函数等等,编译器在编译源文件时还是帮助我们做了很多的。
创建对象时内存的分析
之前在学习数组的时候,我们对数组的创建进行了内存的分析。接下来,我们看看对象的创建内存是怎样的。
其实,分析这些底层的关键,并不是让我们死记硬背,而是说让我们理解高级语言在内存中跑的时候,计算机底层的原理大概是怎样的。
学习狂神老师,在讲解创建对象内存分析的时候,讲的真的挺好的。基本讲解了jvm开始执行java代码的整个过程的内存分析。
我们大概理解下:jvm装载主类至方法区,主类找到程序入口main(),此时main()方法被加载到栈内存。jvm装载Pet类至方法区,此时Pet类的静态的属性及方法被装载到静态方法区。
创建dog对象,会将dog引用变量加载到栈内存。创建的对象分配到堆内存。
面向对象基本理解之后,我们再来看看面向对象三大特征:封装、继承、多态
面向对象三大特征-----封装
封装,其实是面向对象设计理念中最容易理解的了。
封装:其实就是一种程序的设计思想(高内聚-低耦合)。对于封装,其实在代码上的表现就是属性私有,get set.
在实际工作后,你会大量的用到封装这个设计思想,很重要也很基础。
封装的好处:在实际工作之后实际你会对这个的好处有很多理解。实践出真知,这句话一点都不假。封装其实能够保护我们这个类,能够使类不对外暴露自己的属性,通过统一的接口方法进行编程,同时也便于类的维护。
面向对象三大特征-----继承
继承,继承也比较好理解。继承的本质实际是对类的抽象
继承
在看继承这块的时候,我看到了一个很好的快捷键ctrl+H。这个快捷键真的爱了,直接能查到类之间的继承关系。
在java中,所有的类的父级爸爸是Object类,没事可以大概研究下Object类。这个留这下次有时间在研究吧,补充一嘴:其实Object类里面有很多的native方法,是不是觉得越来越了解java的底层了,这么说吧java的底层还得是c、c++啊。。。。。
super
方法重写@Override
方法的重写,仅仅作用在非静态方法上. 子类继承父类,才存在重写。子类重写父类的方法,方法名&参数列表&修饰符范围可以扩大不可缩小
接口定义方法,实现类必须实现接口定义的方法。和方法的重写有很大区别哦。接口和抽象类都会在开发中用到,但是接口用到的更多哦。
面向对象三大特征-----多态
多态----方法的多态
static关键字详解
再看一个比较好玩的东西,大家看看也可以这么用。当我们想引用类的静态方法时,可以直接引用方法。而不是引用类。
抽象类
我们看看抽象类吧
接口
接口其实比抽象类在实际开发中更广泛使用,我们来看看接口吧
实际开发都是面向接口编程,定义好接口之后,我们在做实现类就ok了
我现在就是定义接口,然后在去写具体的实现类
内部类
简单了解下内部类。内部类其实在实际开发中不太常用,了解就可。
内部类就是指在类的内部在定义类,内部类可以获取外部类的私有属性及方法