三大修饰符:static、final、abstract
static(静态)
概念:
1.静态可以修饰属性和方法。
2.修饰属性我们称为静态属性(类属性),修饰方法称为静态方法(类方法)。
3.静态成员是全类所有对象共享的成员,只有一份,不因创建多个对象产生多份。
4.静态成员应该使用类名访问。
调用静态方法:
在同一个类中有多个静态方法,之间互相调用可以直接写"静态方法的名称"
在不同类中,调用其他类的静态方法语法:类名.静态方法名称
static特点
1.静态方法可以直接访问静态成员。
2.静态方法不能直接访问非静态成员,可以通过创建对象进行访问。
3.静态方法可以被继承,没有覆盖,没有多态。
类加载
概念:当JVM首次使用某个类,这个类的.class文件必须先加载到内存中。
加载时机:(背)
创建对象
创建子类对象
访问静态属性
调用静态方法
代码块
{}:动态代码块,执行地位:执行构造方法中的代码之前,初始化属性之后
static{}:静态代码块,执行地位:类加载时执行且只执行一次
abstract
抽象类
抽象类作用:
1.为子类提供共性属性和方法。
2.可声明引用,强制使用多态。
抽象方法的作用:
1.强制子类覆盖,否则子类声明为抽象类。
总结:
1.抽象类不能创建对象,可以声明引用。
2.抽象类中不一定有抽象方法,而有抽象方法的类一定是抽象类。
3.继承下,子类必须覆盖父类中抽象方法,否则子类声明为抽象类。
4.抽象方法,只有方法声明,没有方法实现。
final
概念:最终的。
final可以修饰:
类:表示最终类,不能被继承。
方法:表示最终方法,不能被覆盖。
变量:变量为常量,只能赋值一次。
局部变量:显示初始化。
实例变量:显示初始化、动态代码块、构造方法
静态变量:显示初始化、静态代码块
基本数据类型变量:值不可变
引用数据类型:地址不可变
接口
接口与抽象类的异同:
相同:
都可生成对应的.class文件。
都不能创建对象。
可以声明引用。
都可以使用Object类中的方法。
不同:
接口只能定义公开静态常量,隐式存在public static final
接口只能定义公开抽象方法
没有构造方法、动态代码块、静态代码块
接口的概念:接口是一种能力。
应用:父类提供的方法个数无法满足子类的需求,可通过实现接口的方式扩充子类能力。
拓展:接口是可以多实现的。
接口的规范:
实现接口,需要覆盖接口中的所有抽象方法,否则该类声明为抽象类。
覆盖时访问修饰符必须是public。
类和接口之间常见的关系
类与类:单继承
extends 父类名称
类与接口:多实现
implements 接口1,接口2
接口与接口:多继承
extends 接口1,接口2,接口3
接口的好处
1.降低耦合度
2.更自然使用多态
3.更容易搭建程序框架
4.更容易更换具体实现
5.设计与实现分离