目录
2、语法
如果一个类里没有包含足够的信息来描述一个具体的对象,且包含抽象方法的类,必须设计为抽象类
语法:
abstract class 类{
……
}
抽象方法:被abstract修饰的方法叫做抽象方法,他不需要给出方法的实现体
1.抽象类不可以被实例化,但是可以有构造方法与静态或实例代码块

2.可以与普通类一样定义字段和属性,但不能实例化对象
3.可以被继承,存在的意义是被继承
4.当一个类继承了抽象类后,必须重写抽象类里的抽象方法

5.当继承抽象类的子类也是抽象类时,这个时候就不需要重写抽象方法,但当该抽象子类被继承后,继承该抽象子类的子类必须重写所有的抽象方法

6.抽象方法是不能被private、final、static所修饰的,当方法被这几个所修饰时就不能重写,但抽象类里的抽象方法,当类被继承时是必须要重写的,因此不能被这几个所修饰

相当于多了一层检查机制,当该抽象类里的抽象方法没有被继承该类的子类所修饰时就会报错
接口就是公共的行为规范标准,在Java里接口可以看成多个类的公共规范,是一种引用数据类型
语法:
interface 接口名{
……
}
![]()
1.接口用interface修饰
2.接口里可以有成员变量,但默认都是public static final所修饰的
3.接口里的成员方法默认是由public abstract所修饰的
4.接口里的方法不能有实现体,如果要有必修由default所修饰,接口里可以有静态的成员方法,静态的方法可以有实现体,但是不管是静态的方法还是default修饰的方法都是由public修饰的
5.接口本身也不能实例化,但是可以依靠类来实现接口
6.接口的实现:class 类名 implements 接口1,接口2,当类实现接口后要重写该接口里的抽象方法
7.当一个抽象类实现接口时,可以先不用重写该接口里的抽象方法,当这个抽象类被子类继承时子类就要重写接口与抽象类里的抽象方法
8.接口的默认修饰限定符是abstract
9.接口编译后也会生成一个字节码文件
10.接口里不能有静态实例代码块跟构造方法
11.接口里为了保持简洁,成员变量跟成员方法直接写成数据类型 变量名,返回值类型 方法名 参数列表
接口间也可以继承,相当于接口功能的扩展

当有类实现接口A时,必须重写A与B接口里的抽象方法