1:public :访问权限最大
2:static :内存中只有一份
3:final :是一个常量
4:常量名大写,多个单词用下划线(_)分隔
5:必须初赋值,赋值后,不能重新赋值。
成员变量,将不能在发生改变,那么它将变成常量,称为符号常量
命名规则 : 符号常量的名字,每一个单词全部大写,单词与单词直接通过_进行连接
被final修饰的常量,必须要赋默认值
该方法是最终方法,不能被子类重写
final修饰类 无法被继承,不会有子类
用abstract关键字修饰的方法,称为抽象方法。
抽象方法的特点:只有方法的声明,没有方法体。
抽象方法的作用:被子类重写,为子类规定了方法的调用格式,具体的操作内容等待子类去完成。
用abstract修饰的类(只要包含抽象方法的类必须是抽象类)
抽象类的特点: 抽象类不能被实例化。抽象类的唯一用途就是被子类继承。
抽象类中可以包含非抽象方法。
抽象方法 在方法定义的时候在 返回值类型 前面添加 abstract 关键字可以把方法体删除
当我们一个类中有 抽象方法的时候,我们的这个类就变成了 抽象类
因为抽象方法只能存在抽象类中,抽象类中可以没有抽象方法
抽象类中可以有普通方法
抽象方法存在的目的: 就是被子类进行重写
当我们的子类 继承了 抽象父类,一定要重写父类中所有的抽象方法,没有重写完依旧是抽象类
抽象类与我们普通类的区别
普通类可以直接创建对象, 抽象类不能直接创建对象
抽象类中有普通类中所有内容,只多了一个抽象方法
一个类中 能否有构造方法与能否创建对象没有关系,与这个类有没有成员变量有关,有成员变量,就有构造方法
没有成员变量,就没有构造
final 和 abstract 一定不能同时修饰。因为:抽象类的作用就是被继承,而final修饰的类不能被继承
1、接口不能被实例化
2、接口用来被类实现
3、接口中可以定义属性和方法:
接口中的所有属性 默认的修饰符是 public static final,所以定义时必须赋值。
接口中的所有方法 默认的修饰符是 public abstract
JDK8开始,接口中可以包含默认方法和静态方法
默认方法:使用 default 修饰,不可省略,供子类调用或者子类重写。
静态方法:使用 static 修饰,供接口直接调用。
JDK9开始,接口中可以包含私有方法
私有方法:使用 private 修饰,供接口中的默认方法或者静态方法调用。
接口中可以定义属性和方法
接口的属性是 常量,不是变量
命名方式 要符合全大写,单词与单词之间通过_进行连接
没有变量 也就意味着没有构造方法
接口不能创建对象 既不能实例化
当一个类实现某个接口时,类中要对接口中的所有抽象方法进行实现(添加方法体,完成方法)
定义的类 要想与 接口产生关系,我们需要通过一个关键字
implements 实现的意思
一个类只能继承一个父类,但能同时实现多个接口。 单继承多实现
格式:
class 类名 extends 父类名 implements 接口1,接口2,……{
//类的成员
}
类和接口直接的关系,叫做实现,这种实现可以多实现
需要将多个接口中的所有抽象方法进行重写
当我们的父类中和接口中有相同的方法,会优先于父类进行使用
接口可以实现多层继承
接口可以多继承