抽象类:
1.抽象类中可以有抽象方法,可以有普通方法,也可以有普通的成员变量
2.抽象类中可以不包含抽象方法;也可以什么都不包含
3.抽象类中可以有构造方法,虽然抽象类不能被实例化,但抽象类可以包含构造方法,用来子类给成员变量赋值
4.抽象关键字abstract不可以和哪些关键字共存?
不能是private的,因为一个abstrace方法需要被重写,所以不能被修饰为私有
不能是final;因为一个abstract方法需要被重写,被final修饰的方法是不能被重写的,所以不能同final共存
不能是static;因为一个abstract方法没有方法体,静态方法需要对方法题执行内容分配控件,所以不能同static共存。
不能有
5.抽象类中可以没有抽象方法。抽象类中可以什么都没有
接口
当我们抽取出抽象方法后,如果全部都是抽象方法,可以将此类定义为“接口”
1.定义接口: 使用关键字interface.没有class关键字
2.接口同抽象类,都不能被实例化,是用来被继承的
3.一个类如果需要继承一个接口,使用关键字:implements (实现)
4.一个类如果实现一个接口,必须重写接口中定义的抽象方法;如果不全部实现,那么这个类就是一个抽象类;
5.接口中可以定义成员变量,和抽象方法;接口中定义的成员变量必须被声明为:public static final全局常量;上述关键字可以不写,系统会自动添加;接口中定义的成员方法必须被声明为:public abstract上述关键字可以不写,系统会自动添加
接口的作用
接口一般用于功能扩展:在接口中定义成员变量一般没有多大的作用。一般都在接口中定义若干多的抽象方法。用于其他类实现;我们可以利用这一规则,使接口作为一个“规范”
2.作为功能扩展
在java中不允许多继承,但允许同时实现多个接口,相同的方法都只是定义,没有方法体,所以不会产生冲突;
一个接口可以“继承”另一个接口,使用关键字:extends,而且可以多继承
接口和抽象类:
相同点:
1.都不能被实例化,都是用来被继承的;
不同点:
1.抽象类:抽象类中可以有实现的方法和抽象的方法
接口:接口中只能包含抽象方法,不能有实现的方法
2抽象类:抽象类使用关键字abstract class定义
接口使用关键字 interface 定义 不包含class
3.抽象类:子类继承抽象类使用关键字:extends,只能单继承
接口:实现类实现接口使用关键字: implements,可以多实现
4.抽象类:成员变量可以是普通的成员变量:
接口:成员变量必须被修饰为:public static final
5.抽象类:抽象类中可以有构造方法
接口:没有构造方法
|
|