面向对象
定义
面向对象是一种思维方式,相对于面向过程面向过程注重流程中的每一步,清楚流程中的每一个细节面向对象注重的是对象,有了对象就有对象的一届自己动手做--面向过程,找其他人做面向对象面向对象和面向过程各有优劣,复杂事务面向对象,简单事务面向过程面向对象基于面向过程
类与对象的关系
类是对象的概括/抽取通过new关键字创建对象,可以给对象的属性赋值,也可调用方法
对象的内存存储
属性存在堆中对象存在栈中
成员变量和局部变量作用范围不同内存位置不同生命周期不同
构造方法特点;与类名相同没有返回值作用;用于创建对象可以重载
this关键字代替本类对象调用本类中的属性和方法代表本类在活动的对象的引用--即虚拟对象利用this调用对应的构造方法时必须放在构造方法的首行构造代码块初始代码块--用{}包起来的代码无论用哪个构造方法创建对象,它都会在构造方法前执行一次局部代码块方法中用{}包起来的代码提高栈内存的利用率
面向对象的特征封装权限修饰符publicprotected默认private方法属性的私有化内部类继承利用extends关键字子类通过继承可以使用父类中的一部分方法和属性java单继承多继承比单继承更好的提高代码复用性单继承更能明确方法的调用单继承提高了代码的复用性,也避免了方法调用产生的混乱super关键字在子类中表示父类对象的引用,一个虚拟对象子类通过super来调用父类的方法和 属性super语句必须放在子类构造的第一行多态编译时多态方法的重载是行为的多态重载指的是在同一个类中存在方法名一致而参数列表不同的方法。参数列表不同指的是参数的 个数或者是参数类型不同。重载只和方法签名有关,和修饰符、返回值类型、异常都没有关系。重载本身是一种编译时多态。运行时多态-基于继承向上造型方法的重写在父子类存在方法签名一致的非静态方法两等两小一大重写指的是在父子类中存在方法签名相同的非静态方法。在构成重写的时候,子类方法的权限修饰符的范围要比父类权限修饰符的范围大或者保持一致。子类在重写父类方法的时候,如果父类方法返回值类型是基本类型或者是void,那么子类方法的返回值类型要保持一致。如果父类方法返回值类型是引用类型,那么子类方法返回值类型要和父类一致或者是父类方法返回值类型的子类。子类在重写方法的时候所抛出的编译时异常不能超过父类编译时异常的范围。重写本身是一种运行时多态。抽象abstract修饰符修饰方法;抽象方法,子类继承后必须重写抽象方法可以被重载不能被static/final/private修饰如果抽象方法用默认权限,那么子类必须与父类同包修饰类,抽象类;抽象方法存在的类必须是抽象类不能创建对象有构造方法不能用final修饰可以有其他方法和属性,不一定有抽象方法
static-静态静态变量/类变量类是加载到方法区中类在第一次使用时加载到方法区,加载之后不会移除静态方法/类方法随着类加载到方法区中,先于对象存在用类名调用静态方法在静态方法中不可以直接使用本类中的非静态属性和方法不可以定义静态变量-静态方法调用才在栈中执行可以重载可以继承不可以被重写父子类方法中可以存在方法签名一致的静态方法-构成隐藏父子类中方法签名一致时要么都是非静态(重写),要么都是静态(隐藏)静态代码块用static{}定义的代码块在类加载的时候执行一次执行顺序:父类静态->子类静态->父类非静态->子类非静态所有的静态只能定义在类中不能定义到代码块中
final修饰符修饰数据; 常量定义之后不可改变修饰方法;最终方法,不能被重写/隐藏,可以重载,可以被继承修饰类;最终类,不能被继承
接口一个类的方法都是抽象方法,就可以将这个类声明为一个接口用interface定义--jdk1.8之前接口中都是抽象方法接口不是类--不能创建对象,也没有构造方法通过implement关键字让类实现接口-类实现接口要重写接口中的所有抽象方法java中单继承多实现-一个类只能继承一个父类,可以实现多个接口接口可以继承多个接口,接口之间多继承jdk1.8对接口的改进接口中的默认方法允许定义实体方法-默认方法和静态方法实体方法要用default修饰lambda表达式当接口中只要一个抽象方法时可以用lambda表达式创建接口对象(参数列表)->{方法体}方法体只有一句,可以省略{}可return不写,这一句的执行结果默认为返回值定义表达式的时候参数类型可以省略不写如果一个接口在只有一个抽象方法,那么这个接口可以用@FunctionalInterface 声明为函数式接口
内部类方法内部类成员内部类静态内部类匿名内部类在类中定义类和接口,在接口在定义类和接口
包packageimportjava.lang默认导入定义包的时候尽量不要使用java/javax/org
垃圾分代回收机制垃圾回收针对堆内存垃圾回收是自动的由垃圾回收器GC在堆内存使用率超过70%时自动回收堆内存新生代伊甸园区幸存区minor GC初代回收老生代