我们程序员眼中的对象-看完华华的文章妈妈再也不担心我找不到对象了-Java面向对象编程思想理解系列(1)

大家好!!!我叫霜华,是一个帅到没天理
骚里骚气,热爱人生与绿色
是一个不像程序员的程序员
在这里插入图片描述
作为一个在java这门领域沉迷一年半的人,如今在技术栈广度和深度
还是业务能力在客观层面讲确实进步迅速
(可我就是没秃头,诶这头发咋都掉不了)
(变强和头发我都要(狗头保命))

在这里插入图片描述

回顾自己的学习生涯我进步迅速很大一部分原因一方面肯定是自己在学习上比较努力。其实就我个人觉得技术这东西可能真的在学习上不怎么需要所谓的天赋,毕竟华华是个高考数学差一分及格的人并且是个非科班学生依然能做程序员,所以这条路虽然确实难走。
但只要自己能静下心来,一点点学,肯定会有花开的那天,华华自己,因为这次疫情就算待在家每天都会学习很长时间。所以共勉吧,技术这条路是长而久远的但过程依然很美好。就我个人刚刚开始学这个可能确实是因为这行发展好,吃这口饭,慢慢自己开始喜欢自己学的东西,毕竟创造和解决完问题给人带来的愉悦可能没有东西能够替代吧。


哦哦回到正题,如果有人问java的技术栈里什么最重要,有人可能说反射,毕竟他是框架的灵魂。
有人可能说是线程并发问题,毕竟开发时候我们与它打交道最多(消息队列,分布式,分布式锁,各种设计模式各种数据结构的设计等等技术在我眼里都是直接或者间接的处理并发带来的问题)当然最重要可能各有各的衡量标准,
但就java的学习路程和对各种底层研究层面而言,面向对象思想的掌握可能是最重要的一部分了

在我学习历程而言,我在思想的理解卡住了很久,当真正理解了思想后后面的学习仿佛打通了奇经八脉一样通透丝滑起来
在学校我有幸能建立一个社团,将自己掌握的知识跟学弟学妹们分享,看着他们学习状态,我发现面向对象思想的掌握和理解也是他们难过一道坎
所以我将面向对象编程思想知识进行整理分享给大家


啥都不说先放脑图为敬
在这里插入图片描述

编程思想

目前总结起来有三大编程思想
面向过程
面向对象
面向切面(怀念哈尔滨的烤冷面中)
给大家用三个图讲个故事大家可能就了解三者区别

面向过程思想
在这里插入图片描述
面向对象思想
在这里插入图片描述
面向切面思想
在这里插入图片描述
作为java程序员,实际的学习中我们主要接触面向对象,而面向切面更多的是在了解一些框架底层时候,如果非得说可能就是web实战中用的过滤器、拦截器、(挖个坑以后会写哒(狗头保命))

而面向对象编程思想中
经常看到说类和对象的关系
其实描述两者关系就一句话:
你没对象时候:你对象可以是赫敏可以是诸葛大力可以是学妹,当你有对象时候:你对象只能是那个有无数特点和吸引人的那个她(狗头保命^2)
在很多书里描述类的对象更多是说这是类的实例,这才比较好理解,

类就是所有实例的抽象总结
实例:可以触碰你能实实在在的看到它,看到那淡黄的长裙蓬松的头发
(所以好好找个对象别想什么赫敏诸葛大力了,这些都是我的(狗头保命^3))在这里插入图片描述

类的组成

类有三大组成:属性、方法(包括方法块)、构造器

一、属性:
1.它生命周期非常长,伴随着对象的一生应该是生命周期最长的变量之一。
2.作用:
用来描述一个对象是什么、像什么、有什么(这里具体体现了类关系的 use关系(挖坑+1))
3.格式:
权限修饰符 [特征修饰符] 属性类型 属性名字 [= 值];//[]内的部分可有可不有
4.底层:和对象一起实际存放在堆内存中、

二、方法:
1.位置,这里说的位置是说它在内存中的位置,位置由一个static这个修饰符决定,而位置决定了它是属于类还是属于对象,可是有人说类不是一个抽象的东西吗,它会有东西???,确实如此,但在代码执行的内存中而言类是有东西的,而且还很丰富:上图老铁们!!
在这里插入图片描述
这图其实还有很多需要吩咐,jvm虚拟机控制的东西远不止于此,但我们经常接触的就是这三大区,无论你怎么创建对象,有会有一个类初始化的过程,在方法区会有类模板,所有static修饰的东西都在里!!!
因此这玩意只有这个类模板才能找到,对象是绝对找不到的(我的东西你不能抢!!)
所以在我们眼中类是抽象的,在内存眼中类是实实在在的东西像个创世神控制着创造着对象。目前关于这个先将这么多,以后讲到类加载会详细讲(挖坑+1)

2格式:
权限修饰符 [特征修饰符] 返回值类型 ⽅法名字 (参数列表) [抛出异常] [{⽅法体}]//[]内的部分可有可不有(方法体某种特定情况可有可不有)

3特殊参数:在研究源码过程中我们可能会看到 有个 xxx…这样的参数,它叫做动态参数列表,是jdk1.5之后提供的玩意,参数类型固定,参数个数可以动态,底层本质就是一个数组,与数组参数不能构成方法重载,动态参数列表只能放在参数末尾且只能由一个
4.底层:栈内存中的空间不赋初值是没有值的,所以不能⽤⽅法执⾏(⽅法存储是在堆内存,但是⽅法的执⾏是在堆内存⾥开辟⼀个临时的空间)用完即回收,

三、构造器:
在内存中他是在类初始化时候产生的,你以为的 new xxxx,仅仅只是创造对象那么简单么,内存底层会干很多事(挖坑+1),所以创建对象是一件成本非常大,所以封装中我们会尽可能少的创建对象

1.作用:
用于对类实例进行初始化操作,构造当前类的对象
2.写法:
权限 特征 名字–与类名⼀致 参数 异常 ⽅法体
3.用法:
⽤法: 不能通过建⽴对象来调⽤。只 通过new关键字调⽤
4特点:
每⼀个类都有默认⽆参数的构造⽅法存在;如果我们在类中不定义 就可以直接调⽤⽆参数创建对象;如果我们在类中定义了构造⽅法 默认的即被覆盖;
5.什么时候需要自定义构造器:
默认无参数 除了创建对象 什么也没干;想要在创建对象同时 做一些事情:如:通过构造构造方法来给对象属性赋值,初始化相关操作,或者说调用父类的构造方法。


类的分类

类这玩意在java中有三种形态:
具体类
抽象类
接口

一、具体类:
就不用多说安守本分的中国好男人,没啥幺蛾子结构就正常是上一章讲的类的三大结构
抽象类和接口我们也从类三大结构的方向去讨论

二、抽象类
用abstract修饰

public abstract class Atext {
}

(1)里面的成员:
1.属性:和一般属性没啥区别,正常加修饰符
2.方法:可以含有一般类成员的方法,也可以有抽象方法(就是用abstract这个修饰符进行修饰)(神话:戴上这个金圈,你就无欲无求,凡人的七情六欲不能沾上半点)(人话:你啥也不能干,要干只能让你子孙去做)(java话:不能有方法块,只能子类继承去实际做事情)
3构造器:和一般类一样
4.方法块
(2)是否能创建对象:
含有构造方法,但不能通过调用构造方法直接创建对象,抽象类只能通过自类继承来做事
(3)去其他两兄弟类之间的关系:
抽象类–直接单继承–抽象类 可以实现
抽象类–直接单继承–具体类 可以实现(通常不会出现)
具体类–直接单继承–抽象类 需要将抽象方法具体化才能继承,除非让子类变为抽象类//编译会报错(父债子偿那种感觉)
(4)特别:
抽象类允许有全部具体成员
抽象类可以全部都是抽象方法(发生了一个质变–变成了一道光)

三、接口(interface修饰)(通常来定义规则):
(1)里面的成员
1.属性:
成员变量默认public static final 变量的权限只能是public

 private String xxx=1;
    protected String aaa=1;
    String bbb=1;
    public static final int ccc=1;

前面三种形式会给你直接报错,默认、private protected三大权限都不能在接口里出现

2.不能含有程序块也不能含有static块(带{}的东西接口不会出现)
//这么说吧,我就是个老大,我啥也不做(打工是不可能打工的,这辈子都不可能的)

3.不会让你调用构造方法(我啥也不做还让我生儿子???)

4.抽象类可以多实现接口(用implement 接口名来实现)

5.接口可以直接多继承接口

6.具体类不可以直接多实现接口,实现后需要重写接口所有方法

(总结就是你认我做爸爸无论是亲爸(接口)还是后爸(抽象类)我没做的事(abstract修饰的方法)你都得做(重写))

三种类的关系:
在这里插入图片描述
这次博客先把编程思想、类的组成、类的分类三大部分,写完,其他部分过两天就会出
虽然现在大二,但还是想再秋招试试找到实习,所以最近也再复习
毕竟自己是双非学校,竞争上没啥太大优势,实习对我来讲挺重要,其实去年我去了北京面试了些公司的实习这事我之后会跟大家分享。
再加上自己为自己社团的学弟学妹去培训,复习知识也是必须要走的
所以更新绝对不会鸽

说起社团我相信这个组织会成为高校里不一样的存在,成为普通高校互联网人成长的土壤,我也为此努力着。
它叫做北风,可能会成为优秀的后浪吧!!

在这里插入图片描述
我叫霜华,一个渴望到西溪园区钓鱼的大学生,期待大家看到我的成长,也能从我的博客受益。我们下期见!!!!
在这里插入图片描述

原创文章 6 获赞 0 访问量 574

猜你喜欢

转载自blog.csdn.net/weixin_45898658/article/details/105977717