1、抽象类
public abstract class AbstractClass //里面至少有一个抽象方法
{
public int t; //普通数据成员
public abstract void method1(); //抽象方法,抽象类的子类在类中必须实现抽象类中的抽象方法
public abstract void method2();
public int method4 (){
…… //抽象类中可以赋予非抽象方法方法的默认行为,即方法的具体实现
}
public void method3(){
…… //抽象类中可以赋予非抽象方法方法的默认行为,即方法的具体实现
}
}
说明:
1)抽象类至少要有一个抽象方法;只要包含抽象方法必须定义为抽象类
2)抽象类不能实例化
3)抽象方法必须在子类中实现
2、接口
public interface Interface
{
static final int i; //接口中不能有普通数据成员,只能够有静态的不能被修改的数据成员,static表示全局,final表示不可修改,可以不用static final 修饰,会隐式的声明为static和final
public void method1(); //接口中的方法一定是抽象方法,所以不用abstract修饰
public void method2(); //接口中不能赋予方法的默认行为,即不能有方法的具体实现
}
说明:
1)成员变量必须是static final类型,可以不显式标示static final,但是默认即为static final
2)接口中的方法智能是抽象的,不需要用abstract修饰
3)抽象方法必须在子类中实现
3、接口+抽象
3.1接口与抽象的区别
1)从语法上:接口内部变量都是static final类型,抽象类无限制;
2)从编程上:多实现,单继承。抽象类允许默认行为,但是接口不允许;
3)设计理念上:抽象类是is a,接口是like a;