3.工具类: 构造方法 被private修饰的类,简称工具类;防止被创建对象.
① 无法被创建对象, ② 只能使用类名调用类的成员方法;
4.Math类就是一个工具类,属于一个关于数学计算的工具类
5.代码块: ① 局部代码块: 在方法体内
② 构造代码块: 随着类的对象创建而加载,优先于构造方法之前,提取构造方法中的共性;
③ 静态代码块: 随着类的加载而加载;且只加载一次;静态代码块的加载应用:驱动加载;
day 02
1.继承: 关键字 extends
定义: 多个类有相同的成员变量和成员方法,需抽取多个类中相同部分的成员变量和成员方法到另外一个类(父类),让多个类去 extends 这个父类,此方法叫做继承;
特点: ① Java语言只支持单一继承,即一个子类只能继承一个父类
② 为了解决单一继承的局限性;Java继承可以具有多层继承的特性
*** 注:一个类如果没有继承任何类,那么他默认继承object类
成员变量: ① 子类只能继承父类非私有成员变量
② 子父类中成员变量名如果在子类没有,直接获取父类的该变量;
③ 强行调用子类成员变量使用this 关键字,强行调用父类成员变量使用super关键字
成员方法: ① 子类只能访问父类非私有方法;
② 子类没有这个方法,调用父类;子类中有这个方法,使用子类的;称作方法的重写;
③ 如果一定要在子类中调用父类的方法;在调用方法的时候加上super;
应用;在同一个行为中,当父类的行为无法满足子类的行为,此时需要对父类的方法进行重写;
方法的重载 overload: 定义>> 在一个类中,有多个方法名相同,参数列表/参数类型/参数顺序不同;
方法的重写 override: 定义>> 在子父类当中,当子类的方法声明与父类的方法声明相同(除方法的权限以外),称方法的重写(覆盖);
注: ① 子类重写父类方法的时候,权限修饰符必须 >= 父类权限修饰符
② 在子类中,使用this调用方法,如果子类中没有这个方法,默认调用父类的这个方法;
构造方法:
① 先父类构造方法初始化(先成员变量初始化,再构造方法初始化);再子类构造方法初始化(先成员变量初始化,后构造方法初始化);
② 有子父类继承关系中,子类构造方法的第一行,如果没有调用父类的构造方法,则会默认调用父类的无参构造;
③ 不管子类构造方法如何调用,第一条输出的肯定是父类构造方法;
this 和 super的区别:
this :
① 当前对象的引用;
② 调用当前类的方法或成员;
③ 可在子类的构造方法第一行调用该类的其他构造方法;
④ 调用当前类没有定义的变量时,默认调用父类该变量;
Super:
① 子类对父类的方法或变量的引用;
② 调用父类的构造方法
③ super调用构造语句只能放在子类构造方法的第一行中;如在子类构造对象中,没有使用super调用父类构造方法,则默认调用父类构造方法;
注: 构造方法中第一行输出的语句只能是super/this,且他两不能同时存在;
父类有两个东西无法继承给子类
① 父类私有化成员/方法
② 父类构造方法无法继承;只能通过super访问;
继承的优点:
① 提高代码的复用性;
② 提高了可维护性;
缺点:
1>.类与类的耦合性变高;
2>开发原则:高内聚低耦合
3>.内聚:独立完成事件的能力
4>.耦合:类与类的关系;
2.注解:以@开头,写在类/方法上面
@override 方法的重写注解
@overload 方法的重载
3.抽象类: abstract 关键字 用于修饰方法和类
抽象方法: 不同类的方法是相似,但是局土内容又不太一样,所以我们只能抽取他的声明,没有具体的方法,
没有具体的方法体的方法就是抽象方法;
有抽象方法的类必须是抽象类;
注:一个子类继承了一个抽象类,必须完善抽象类的抽象方法,如果不完成,子类就必须是个抽象
abstract 不能与final与private/static共存;
day 03
1.接口: interface修饰符
用于处理继承单一的局限性;
接口是一个比抽象类还抽象的类,接口里面所有的方法都是抽象方法.
接口和类的关系是实现,使用implements实现
格式:
interface 接口名{ 抽象类方法体 };
类与接口的关系是实现,一个类使用一个接口,必须实现接口中所有的抽象方法;
特点:
① 接口内部只能有抽象方法;
② 接口无法创建对象,因接口是抽象类;
③ 只能有常量/自定义常量;
④ 默认使用public static final来修饰自定义常量;
注:
① 只能使用public&abstract修饰;
② 建议手动添加接口方法的修饰符;
接口内部没有构造方法:因内部没有成员变量,只能有常量,也不能创建对象;
一个方法能定义成static,就定义为static;
① 被所有对象所共享;
② 可以使用类名直接调用;
③ 静态加载优先对象,随着类的加载时候就已经加载;加载于方法区;
4.泛型: 集合可以存储任意类型的对象,存储的时候可以一个集合里面存储的类型不一样,
此冲情况就会报错,所以java对集合就定义了泛型;
泛型是提前明确了该集合所存储的类型;
优点: ① 避免类型转换错误
② 减少编码区黄色警告
③ 简化我们代码的书写
格式标志: <E>
所有创建对象的时候看到<E>这样的标志,就表示需要添加泛型;