接口和抽象类的区别。
接口和抽象类的区别
接口:
1.接口中只能定义常量和抽象方法,
//*public static final */ double PI =3.45 ---接口中的成员可以不写修饰符。默认都是public
//*public abstrac */void 方法名();
2.接口表示一种能力,想扩展就实现不想就不实现。
3.接口不能实例化,因为没有构造方法,只能被实现使用
4.类只能继承一个类,但是可以实现多个接口,这就是java中的多继承
5.接口实现使用implements 继承使用extends关键字
6.接口可以继承接口,并且可以同时继承多个接口
7.类可以在继承父类的同时,实现多个接口
8.接口就是一系列的方法的声明
抽象类:
1.使用abstract关键字修饰
2.抽象类不能实例化,需要子类继承使用
3.抽象方法没有方法体,需要被重写
4.抽象方法必须在抽象类中
5.子类必须实现父类中所有的抽象方法,除非子类也声明为抽象类
6.抽象类中可以有普通方法
7.抽象类不能被final修饰,抽象类是被用于继承的,final修饰代表不可修改,不可继承
区别:
1)语法
抽象类中可以有自己的属性,普通的非抽象方法,以及抽象方法
接口中一般定义常量和抽象方法,没有普通成员属性,所有方法均为抽象方法
2)编程
抽象类只能继承一个,接口可以同时实现多个
3)问题应用
使用继承必须存在is-a的关系
接口不要求实现类和接口之间有关系
4)接口和抽象类,都是为了多态服务的