继承(inheritance):一个类只能继承一个类 代码复用 继承的语法: class ChildClass extends ParentsClass{

} 父类的属性子类中都存在,只是有没有权限访问的问题 根据名字找谁是谁? 1.变量-> 类型 (类、接口)->接口 2.已经确定是变量 局部变量、形参->类的属性-> 外部类的属性 就近原则 构造方法: 注意默认的那个无参构造方法

优先调用父类的构造方法 如果没有明确指出,java会插入一条调用父类的构造方法(无参的) 利用super关键字: 1.调用父类的构造方法 2.去访问被隐藏的父类的属性 3.去调用被覆写的父类的方法 调用父类的构造方法一定出现在本类构造方法的第一行 this关键字的作用: 1.访问对象的属性或方法(当前对象) 2.调用其他构造方法 3.代表本对象

调用构造方法:先父类后子类 加载构造方法:先父类后子类 ***必须在父类的所有初始化完再去执行子类的初始化 执行顺序: static属性初始化是在类的加载时按顺序执行 定义时初始化、代码块初始化 普通属性初始化是在对象的构造时执行 1.定义时初始化和构造代码块按书写顺序执行 2.构造方法初始化 类的加载: 1.什么是类的加载(Node类的加载)? 从硬盘上找到Node.class,解析该文件内容,生成Node类,把Node类的信息存放在内存的方法区 2.什么情况下会触发类的加载,并且该类不在内存中 按需加载(懒加载过程) 1.实例化该类的一个对象 new Node(1); 2.使用类的静态属性或者静态方法 Main.merge(...) 3.用到子类必须先要有父类 new CNode 对象的构造、实例化 new Node 规则: 1.优先初始化父类的属性 2.按照下面的顺序执行初始化 按照代码书写顺序,执行定义时和构造代码块 再去执行构造方法 覆盖(override)(方法不是静态方法) 方法名一致,参数列表一致 方法签名:方法名称+形参·列表 方法重载:方法名称+参数列表不同 构造对象的语法: Node node=new Node(1); new的作用: 1)为对象计算所需内存的大小 2)申请空间 3)初始化0x0 static只能出现在成员级别 static 和对象进行解绑 abstract 关键字有什么作用? 1.修饰类·,该类是抽象类,无法被实例化的类 abstract class A{} new A是错误的 2.修饰方法,该方法是抽象方法,没有被实现的方法 abstract void method(); 包含抽象方法的一定是抽象类。 抽象类不一定包含抽象方法。 fina关键字有什么作用: 1.修饰类:表示该类无法被继承 2.修饰方法:该方法无法被覆写(方法名和形参) 3.修饰变量:该变量的值只能被初始化一次,无法再次修改 final类中不可以有abstract方法 final类和final方法基本没关系 重载overload和覆写override: 1.方法签名:方法名+形参列表 重载:方法名相同,形参列表不同 2.覆写,发生在子类继承父类或者类实现接口 1).方法名和形参列表相同 2).方法的返回类型要比父类的返回类型相等或者小 3).访问限定符:访问限定符只能和父类的相同或者大 4).@Override 注解

接口:一个类可以有多个接口 interface 接口名 引用=对象; 1.引用只能指向对象,或者什么都不指向 2.数组引用、类类型引用、接口类型的引用 3.对象:数组对象、非抽象类类型的对象