编程思想/oop设计模式

过程性的编程思想

大学里学的汇编,全凭0,1

结构性的编程思想

单片机,嵌入式之类解决问题的思想(行动要求直接输出结果)类似学生时代做题,性能较高


C语言里面有几个能表现出结构化思想的地方:分支(if), 循环(while,for),结构体(struct). 只要你会用这三个,那么你就可以写出结构化的程序,但不一定你就了解什么是结构化的编程方法。什么叫做结构化?为什么说goto会破坏程序的结构化?结构体有什么作用,你能说出结构体的哪些好处?(C语言的"数据结构")

面向对象的编程思想(oop)

类与对象

万事万物皆为对象,面向对象是把事物解析成对象,描绘各个对象之间的交互,和交互后的状态(类似于人与人之间的联系)

对象:指代一个具体的事物,比如人

类:描绘一个对象的属性的集合,比如[红色衣服,白色眼镜,男]

类实例化成对象: 一个穿红色衣服,戴白色眼镜的男人

对象是类的具象化

方法

有参方法:方法带参数

无参方法:方法不带参数

对象数组

一个元素是对象的数组

重载和构造

重载:可以有多个同名但是参数类型或者参数个数不同的方法。(仅指方法)

构造:一个用来创建对象,且用来赋值的方法。分有参构造和无参构造

this、static、单例模式

this

        当前对象

static

       静态方法和属性可以类名直接调用,它是公有的。静态方法只能调用静态的方法和属性(静态方法是属于类的,动态方法属于实例对象,在类加载的时候就会分配内存,可以 通过类名直接去访问,非静态成员(变量和方法)属于类的对象,所以只有该对象初始化之后才存在,然后通过类的对象去访问。)如果要调用的话,可以new一个对象出来调用

动态没有限制

单例模式

无论调用多少次都是只是一个对象。是spring默认的初始化的类的配置

懒汉式:在真正需要使用对象时才去创建该单例类对象Double Check(双重校验) + Lock(加锁)

饿汉式:在类加载时已经创建好该单例对象,等待被程序使用

@Scope注解默认单例饿汉式模式生成(如果要变成懒汉式,添加@Lazy注解),但是设置成prototype 则会变成多例模式懒汉式加载(getBean()的时候创建)

单例模式在容器启动的时候创建/通过注解或者xml或者配置类创建,之后set设置属性值,initMethod()初始化,最后调用 destroyMethod() 销毁(容器关闭时调用销毁流程)(销毁时可以调用bean后置处理器(BeanPostProcessor接口)自定义销毁前后的特殊处理)

多例模式getBean()创建,然后赋值,最后被gc回收时销毁

后续讲bean时会细讲

面向对象三大特性

封装

        相关数据封装成类(类的属性设置成private,但是提供公开的get,set以供赋值)

继承

        子类继承父类的特性(各种属性和方法),之后就可以使用父类的属性方法,同时不影响自己新增的属性和方法。Spring框架的底层bean就是继承factorybean接口。类的继承是单向的。但是一个接口是可以继承多个父类的。

多态

        一个父类的多个子类继承了父类的方法并且重写了,导致表现不同的情况(要求必须得是有继承关系的两个类)

        多态的向上转型:父类调用子类方法

        多态的向下转型:父类强转成子类

instanceof

        (object) instanceof 类(class) object是否和class是一致的或者有继承关系(向下转型的情况下必用,否则可能报错)

接口

         接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。接口是解决Java无法使用多继承的一种手段,继承的关键字为interface

        我们不能直接去实例化一个接口,因为接口中的方法都是抽象的,是没有方法体的,这样怎么可能产生具体的实例呢?但是,我们可以使用接口类型的引用指向一个实现了该接口的对象,并且可以调用这个接口中的方法。(实际上就是使用了Java中多态的特性)

        接口类似于一个动作的集合,例如一个usb上传功能的接口,它只需要被继承被调用实现usb口的键盘和鼠标的信号数据传输上来,至于数据的承载和处理,需要这个usb接口实现的键盘类和鼠标类来分别承载然后进行处理。只要实现了这个接口,就等同于具备了这个接口代表的功能。比如在当下这个usb接口被实现了,说明具备了usb数据传输的功能。

异常

异常处理

try{

         代码逻辑块

} catch(报错信息)(

         异常捕获(可以选择throw、throws 抛出,如果不抛出,程序将可以再运行下去。如果外面调用的代码需要捕获异常的话,一定要抛出)

) finally {

          结束后进行处理(包括异常处理后)

        比如io流的关闭(曾经因为创建文件夹且生成文件的程序没有关闭io流导致下次再创建时异常)

}

异常种类

Java异常

        可以继承RunTimeException接口返回自定义异常

        Exception:所有异常的根类,不知道会报什么异常的话选这个准没错

        算术异常类:ArithmeticExecption

        空指针异常类:NullPointerException

        类型强制转换异常:ClassCastException

        数组负下标异常:NegativeArrayException

        数组下标越界异常:ArrayIndexOutOfBoundsException

        违背安全原则异常:SecturityException

        文件已结束异常:EOFException

        文件未找到异常:FileNotFoundException

        字符串转换为数字异常:NumberFormatException

操作数据库异常

        SQLException

输入输出异常

        IOException

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值