一、抽象类
抽象类:一组规范。比如某个系统支持用户自定义插件,但用户也不能随便定义,这个时候,我们可以对用户提供一个抽象类,也就是规范,用户来实现这个抽象类就可以了。
抽象类和抽象方法定义
public abstract class Plugain {
public abstract void method();
}
实现子类定义
public class MyPlugain extends Plugain {
@Override
public void method() {
}
}
注意:
1、抽象类不能直接new,要使用规范的具体实现;
2、抽象类里面可以有普通方法,但抽象方法必须定义在抽象类;
3、抽象类也是有构造方法的
4、抽象类是通过继承来完成具体规范的实现的,但Java只支持单一继承,那当包含多个规范需要是现实时,仅仅依靠抽象类就不能完成了,这时就需要接口,接口也是一种规范,但实现接口时,可以实现多个规范。
二、接口
接口定义
关键字:interface
接口中定义的方法都是public abstract,所有变量都是常量,public static final
public interface UserService {
// 接口中定义的方法都是public abstract
// 接口必须有实现类
int add(Student student);
void delete(long id);
int update(Student student, long id);
Student query(long id);
}
接口实现
关键字:implements
接口必须有实现类
命名以Impl结尾
public class UserServiceImpl implements UserService{
@Override
public int add(Student student) {
return 0;
}
@Override
public void delete(long id) {
}
@Override
public int update(Student student, long id) {
return 0;
}
@Override
public Student query(long id) {
return null;
}
}
和extends不同,可以实现多个接口
public class UserServiceImpl implements UserService,UserServices2 {