编程思想
1)面向对象
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为!
2)面向过程
就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了!代表是C语言!
3)面向接口
开发程序的功能先定义接口,接口中定义约定好的功能方法声明,通过实现该接口进行功能的实现,完成软件或项目的要求.软件或项目随着时间的不断变化,软件的功能要进行升级或完善,
开发人员只需要创建不同的新类重新实现该接口中所有方法,就可以达到系统升级和扩展的目的.
4)函数编程
java的lambda
5)切口编程(AOP)
AOP 只适合那些具有横切逻辑的应用场景,比如性能监测 、访问控制 、事务管理以及日志记录等。
类和对象
1)类class:对事物的抽象,例如“人”就可以看做是一个类
2)对象,就是类的实现。例如对“人”这个类的实现 就是 彭于晏(一个具体的人的实现,这个人叫彭于晏,很帅,等等等等)
3)构造器
用于创建对象并初始化对象属性的方法,叫“构造方法”,也叫“构造器”;构造器在类中定义!
构造方法与类名相同,没有返回值,连void都不能写
构造方法可以重载(重载:方法名称相同,参数列表不同)
如果一个类中没有构造方法,那么编译器会为类加上一个默认的构造方法。
构造方法在创建对象时调用,具体调用哪一个由参数决定。
构造方法的作用是为正在创建的对象的成员变量赋初值。
4)this
this 关键字表示当前类
this是java多态的体现之一
this只可以在构造方法和实例方法种存在,不能出现在static修饰的方法或代码块中
this在构造方法中表示刚刚创建的对象
this在实例方法种表示调用改方法的对象
this可以在实例方法和构造方法中访问对象属性和实例方法
this有时可以省略
this可以在实例方法中作为返回值
this可以当作实参
this可调用重载的构造方法
5)static
static 表示静态 方便在没有创建对象的情况下来进行调用
用static修饰以后,表明当前修饰的无论是方法,属性,类 都是属于类的,(而不是类的实现对象,所以用类可以直接调用!)
static 可以修饰方法
static 可以修饰属性
static 可以修改代码块
static 可以修饰类 普通类是不允许声明为静态的,只有内部类才可以!(叫做静态内部类)!
扩展:
类初始化的顺序从上到下依次初始化:
父类静态变量
父类静态代码块
子类静态变量
子类静态代码块
父类普通变量
父类普通代码块
父类构造函数
子类普通变量
子类普通代码块
子类构造函数
6)final
fianl 表示最终的不可修改的
可以修饰成员变量、方法、类以及本地变量。
一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误!
定义在类上,表示类不可以被继承
定义在方法上,表示不可以被重写
定义在属性上,表示值不可以被修改
7)import
表示导包
方便引用其他包的java类 或者第三方的组件jar包的东西
8)访问修饰符
private 只能在本类中使用
default 只能在本类和本包中使用
protected 只能在本类、本包、继承的子类中使用
public 任意地方都可以被访问
9)重载
方法的重载:在同一个类中,有相同名字的方法
重载有三种展示形式:
参数列表的个数不同
参数列表的类型不同
参数列表的顺序不同
封装
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性
广义的封装:
在代码中可以将某个代码块变成方法,抽象出某些工具类
狭义的封装:
1、将属性设置成私有,不能被外部直接访问
2、提供共有的set和get方法,使外部可以进行调用
3、可以实现更加复杂细致的内部逻辑判断
总结:保护类的内部实现细节,只提供公共的对外访问接口,保护类的安全
继承
继承和现实中的意义基本一致,儿子继承爸爸的部分东西!
子类可以拥有父类的某些属性和方法,但是私有的除外
java中式严格意义上的单继承,但是可以多重继承,(儿子 爸爸 爷爷 这种叫做多重继承)!
使用extends关键字来实现继承
继承中的重写:
当父类中的某些方法不能满足子类的需要的时候,子类可以重写父类的方法,要求跟父类的方法名称一致
子类方法的访问修饰符要大于父类的访问修饰符
super:
类似于this 关键字,不过super指的是 爸爸类,this指的是自己!
在创建对象的时候,可以在子类中直接通过super关键字调用父类的构造方法
在子类方法中可以使用super.的方法调用父类的方法和属性
多态
多态存在的三个必要条件
1.继承
2.重写
3.父类引用指向子类对象
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
通俗解释;对于同一个指令,不同的对象给予的不同反应
父类和子类对象的转换:
由子类到父类,自动转换
由父类到子类,强制转换,一般通过instanceof进行判断
接口
接口代表一种能力一种规范
一个类只能extends一个父类,但可以implements多个接口
一个接口可以同时extends多个接口,却不能implements任何接口。
所以说 Java中的接口是支持多继承的。
下图为java中接口并不能 implements 另一个接口:
接口中的方法都是public abstract这样的访问修饰符,不能包含具体的方法实现
子类如果实现了某个接口,那么接口中的所有方法都要被重写,且实现具体的逻辑,如果没有实现的话,那么子类要么是子接口要么是抽象类
接口中的属性都是常量值
内部类
静态内部类
方法内部类
匿名内部类 使用最多,形式上像是new 接口,但是只适合于该接口只使用一次的应用场景
成员内部类