一、什么是面向对象
万事万物皆对象:对象是对类的实例化,类是将实体的共性抽离出来
二、面向对象的三大特征
1.封装
1.将类中的属性隐藏起来,仅对外暴露公共的方法去获取或修改属性
2.将方法的实现细节功能结构隐藏起来,提高安全性
3.设置构造方法的权限,可以防止使用new的方式实例化
2.继承
1.子类继承父类以后,相当于继承了父类中的所有功能结构
2.子类可以对父类中的方法进行重写
3.一个子类只能继承一个父类(超类,基类),父类可以被多个类继承,接口可以多继承
3.多态
1.父类或接口的引用指向子类的对象
2.编译看左边,执行看右边
3.实现多态,对象只能调用父类中包含的方法,不能调用自己特有的方法
三、类及类的内部成员
1.类:
权限修饰符 class 类名{}
当声明为private只能在当前类使用;声明为public在当前项目的任意位置都可以使用;声明为propected,除了异包异类下都能访问;声明为默认权限,不能在异包异类和异包子类中访问(远亲不如近邻)
2.属性:
权限修饰符 变量名;
全局变量
声明在类中,可以被类中的所有成员访问
局部变量
声明在方法中,只能在当前结构中被调用
3.方法:
权限修饰符 返回值类型 方法名()
方法重载:
两同三不同;方法名相同,在同一个类中;参数的类型,数量,顺序不同
方法重写:
只改变方法体,子类中重写的方法的权限修饰符的作用范围> 父类中被重写的方法,子类中重写的方法的返回值类型<父类中被重写方法的返回值类型(如:子类为String类型,父类为Object类型)
4.构造器:
权限修饰符 类名(){}
无参构造器:
类默认提供一个空参构造器
有参构造器:
重写一个带参数的构造器会覆盖掉空参构造器,需要自己再写一个空参构造器
5.代码块:
{}
静态代码块
会在类初始化后优先执行代码块中的内容
非静态代码块
创建对象后先执行非静态代码块的内容
6.内部类:
class 类名{}
普通内部类
静态内部类
单例模式:使用static修饰的内部类实现单例模式不仅线程安全,而且实现了延迟加载
匿名内部类
直接在类中使用抽象类名或接口名创建对象并实现内部的抽象方法
四、关键字
this
指向当前类
super
指向父类
super()和this()用于调用父类或当前类的指定构造器,在当前构造器中只能出现一个,且声明在构造器首行
static
使用static修饰的成员可以直接被类名调用,在类初始化时就会加载被static修饰的成员
final
1.修饰类表示该类不可被继承
2.修饰属性表示该属性不可被修改
3.修饰方法表明该方法是最终的,不可以被重写
extends
表示继承:class A extends B{}
implement
表示接口的实现:class A implements B{}
五、抽象类和接口
抽象类:
权限修饰符 abstract 类名{}
1.抽象类就是用来被子类来继承的
2.抽象类中不一定有抽象方法,但抽象方法一定声明在抽象类中
3.子类继承抽象类,一定要重写抽象方法
接口:
interface 接口名{}
1.接口就是规范
2.接口中的方法默认声明为public static final
3.属性默认声明为public abstract
4.接口中没有构造器,因此不能实例化
5.接口可以去继承,而且是多继承
异常处理
异常的定义:异常就是不正常,在程序中出现的不正常的情况,Java通过异常去解决。
一、异常的处理方式:
1.如果我们没有对于程序中的异常进行任何处理,则JVM帮我们处理,处理方式:
- 终止程序
- 打印输出当前的异常信息
- 当前异常包装之后的异常类型
- 当前异常出现的原因
- 当前异常出现的位置
二、异常的解决方案
1.处理异常的关键字:
try、catch、finally、throw、throws
2.执行过程分析:
- 执行try块中的的内容
- 如果出现异常则创建一个与对应当前异常类型的异常对象
- 以此匹配catch,查看是否匹配
- 如果catch匹配成功,则执行当前catch块中的内容,结束整个try-catch语句,继续执行后续的代码逻辑
- 如果catch匹配失败,则继续与下一个catch中的异常类型进行匹配,直至匹配成功
3.jdk7之后的catch增强:
jdk7之后可以用一个catch来捕获多个异常,多个异常之间通过|
分割,但是要注意,catch捕获多个异常的时候不能存在字符类关系
4.为什么需要finally
完成某些业务的时候,需要通信、文件数据的传输,此时就需要使用IO、Socket、Connection这些资源,而这些资源,而使用这些资源时,需要在执行结束之后,对资源进行关闭