1、抽象类
(1)概述:用来存放抽象方法并且用abstract修饰的类。
(2)抽象类格式:abstract class{}
抽象方法的格式:public abstract 返回值 function(){}
(3)特点:
A.抽象类必须用abstract关键字修饰;
B.抽象类不一定有抽象方法,有抽象方法的类一定是抽象类(不要忘记:接口中也有抽象方法。)
C.抽象类不能实例化
D.抽象类的子类
(a)是一个抽象类。
(b)是一个具体类。这个类必须重写抽象类中的所有抽象方法。
E.抽象类的成员特点:
(a)成员变量:有变量,有常量;
(b)构造方法:有构造方法;
(c)成员方法:有抽象,有非抽象;
(4)注意事项:abstract 不能和private,final,static一起使用
2、接口
(1)概述:用interface关键字定义接口,将方法的定义和方法的实现分离。
(2)特点:
A.用interface关键字修饰接口名;
B.接口不能被实例化;
C.接口的实现类用implements实现接口;
D.接口的实现类
(a)是一个抽象类;
(b)是一个具体类,这个类必须重写接口中的所有抽象方法;
E.接口成员特点:
(a)接口中的成员变量默认是pulic,static,final类型的,必须显示初始化;
(b)接口中的成员方法默认是public,abstract类型的;
(c)JDK8之后允许定义默认方法和静态方法;
(d)没有构造方法
3、抽象类和接口的异同:
(1)相同点
A.都不能被实例化;
B.都包含抽象方法;
(2)不同点
A.一个类只能继承一个类,可以是抽象类;而一个类能实现多个接口;
B.抽象类的成员可以是变量、常亮、抽象方法、非抽象方法,而接口只能是常量、抽象方法、默认方法和静态方法(JDK8开始)
4、Java语言的修饰符
(1)static修饰符
A.概述:可以修饰成员变量和成员方法
B.特点:(a)随着类的加载而加载;
(b)优先于对象存在;
(c)被类的所有对象共享;
(d)可以通过类名调用。
C.注意事项:在静态方法中是没有this关键字的;
静态方法只能访问静态的成员变量和静态的成员方法。
D.静态的内容存在于方法区的静态区
E.静态变量和成员变量的区别
(a)所属不同
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
(b)内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
(c)内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
(d)调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用
(2)final修饰符
A.修饰类,类不能被继承
B.修饰变量,变量就变成了常量,只能被赋值一次
C.修饰方法,方法不能被重写