封装
作用:
可以隐藏信息,提高安全性高,进行赋值与取值,进行封装数据
封装的优点:
封装业务的优点:
一 减少偶合 ,良好的封装能够减少偶合,提高系统独立性
二 可重用性 封装重复的代码
封装数据的优点:
一 精确控制
二 安全性 隐藏信息实现细节,降低了构建大型系统的风险
封装的步骤
第一步 修改属性的可见性来限制堆属性的访问
第二步 堆每个值属性提供对外访问的方法创建一对赋值方法
实现封装:封装实例
set调用静态常量池
修饰符
访问修饰符
可以使用访问控制符来保护对类,变量,方法和构造方法的访问
default (缺省,什么都不写)在同一包内可见不使用任何修饰符 使用对象 类 接口 变量 方法
private 在同一类内可见,使用对象,变量,方法,注意不能修饰类(外部类)
public 对所以类可见,使用对象 类 接口 变量 方法
protected 对同一包内的类和所有子类可见,使用对象,变量方法不能修饰类,外部类
完全限定名:包名+类名
非访问修饰符
static修饰符 静态修饰符,用来修饰类方法和类变量
final 修饰符,方法,变量,final修饰的类不能够被继承,修饰的方法不能被继承类重新定义 修饰的变量为常量不能修改
abstract 用来修饰抽象类和抽象方法
被static修饰的变量一般是不发生变化的但可以发生变化 static是类级别的随着类加载时一起被加载到内存当中 被static修饰的方法不希望被重写
static final 静态常量不可被修改(常量名全大写)必须在声明时赋值只可被赋值一次
面试题
在静态方法里面不可以使用非静态资源 被final修饰过的变量不能在被赋值 被final修饰过的方法不能在被重写但可以重写别人得到的 被final修饰过的类不能被继承但可以继承别人
继承
继承是java面向对象编程技术的一块基,它允许创建分等级层次的类
作用
子类用有父类的属性和方法 减少冗余提高复用性后期维护度高
继承关键词
class-定义类 interface-定义接口 extends-继承父类(单继承)super(父类的对象)
implements-实现接口(多实现)
特点
子类拥有父亲非pivate的属性方法
子类可以拥有自己的属性和方法即子类可以对父类进行扩展
子类可以用自己 方式实现父类的方法 提高了类之间的耦合性
继承的缺点,耦合度高会造成代码之间的练习越紧密代码独立性越差
java的继承是单继承 但是可以多代继承
双亲委派
层级高的先运行
先静态在按照层级逐次运行
抽象类和接口
抽象类在繁杂的类信息中把关键信息拿出来组合一个新的简洁大方的类
抽象类的特性
抽象类不能被实例化
由于抽象类不能被实例,所以必须被继承才能被使用抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口
抽象类的关键字;abstract
抽象有构造方法但无法创建对象
抽象类方法和普通方法
抽象类方法没有方法体
普通方法有方法体
抽象类不能被实例化但是可以创建一个引用变量,其类别是一个抽象类,指向非抽象的子类实例
普通类可以被实例化
重写@Override Overlode重载
重写和重载的区别
重写是对父类的代码进行一次内容的重写 不在同一个类中方法名返回值阐述列表必须一致
重载在同一类中方法名相同 参数列表不同
抽象类的构造方法是存在可以运行的,但是jvm中取消了最后一步创建对象的功能
抽象类和抽象方法
抽象类
一个抽象类中有零到多个抽象方法
抽象类不能创建对象所以希望有子类否则将没有意义
抽象类里有构造函数且可以运行但没有创建对象的功能
抽象方法
抽象类是可以继承抽象类的
非抽象类子类必须重写抽象父类的抽象方法
抽象子类可重写可不重写
所有抽象方法必须重写
抽象方法必须在抽象类中
抽象方法没有方法体以分号结尾
接口
在java编程语言中是一个抽象类型,是抽象方法的集合,接口用interface声明一个类通过继承接口的方法从而来继承接口的抽象方法
接口并不是类 编写接口的方法和类的很相似,但是它们属于不同的概念类描述过对象和属性和方法接口则包含要实现的方法 接口无法被实例化但是可以实现
接口与类的区别
接口不能用于实例化对象
接口没有构造方法
接口中所有的方法必须是抽象的方法
接口不能包含承轩变量除了static和final变量
接口不是被类继承了而是要被类实现
接口支持多继承
java中的接口
属性全部都是静态常量
方法都是全局抽象方法
无构造方法
一个类可以实现多个接口,非接口类实现接口时必须实现接口的全部方法
抽象类利于代码复用,接口利于代码维护
多态和异常
多态
同一个行为具有多个不同表现形式或形态的能力,就是同一个接口,使用不同的实例而执行不同操作,就是同一个事件发生在不同的对象上产生不同的结果
多态的优点
1,消除类型之间的耦合性(子类和父类)2,可替换性3,可扩充性4,接口性5,灵活性6,简化性
多态存在的三个条件,1继承,2,重写,3父亲所引用指向子类对象
向上转型(隐式,自动类型转换)
向上转型 父类的引用指向子类对象
自动进行类型不全 是小类型到大类型的转换
instanceof对类型的判断
对象必须是有继承关系的两个类型
对象的类型必须和insfanceof后面的参数所指定的类在上下级有继承关系
向下转型(强制类型转换)
向下转型:将一个指向子类对象的父类引用赋给一个子类的引用
即父类类型转换为子类类型,需强制类型转换,是大类型转换到小类型的自动转换(存在风险,溢出)
语法上在向下转型的过程中,如果没有转换为真实子类类型,会出现类型转换异常
异常
异常是阻止当前方法或作用域继续执行的问题
异常错误类型
1用户操作错误(用户输入非法数据)
2程序错误
3物理错误
三种类型的异常
1检查性异常
2运行时异常
3错误
Exception类的层次
所有异常是从java.long.Exception类继承的子类
Exceotion类是Throwable类的子类,除了Exception类外还有Error子类
Error不会被捕获错误
内置异常
ArraylndexOutofBoundsException 数组下标越界
NullpointerException 尝试访问null对象成员
classnotFoundException 不能加载所需的类
classCastexception 对象强制类型转换出错
捕获异常
try和catch关键字
try{
程序代码
}catch(Exception Name el){
catch块
}
try和catch可以捕获异常try/catch代码块放在异常可能发生的地方
finally关键字无论是否异常 finall代码块中的代码总会被执行
在finally代码块中,可以运行清理类型等收尾后性质的语句
抛出异常
throws/throw关键字
throw生成并抛出异常 位于方法体内部,可作为单独语句抛出一个异常对象且只能有一个
throws声明方法内抛出了异常 必须跟在方法参数列表后面不能单独作用,声明抛出异常类型可以跟很多异常