java接口和抽象类的区别
2016-09-02 15:28
267 查看
接口实现和类继承的规则不同,为了数据的安全,继承是一个类只能继承一个父类,是单继承。
一个类可以实现多个接口,接口弥补了类不能多继承的特点。
接口的特点:
A:接口用关键字interface表示
interface 接口名 {}
B:类实现接口用implements表示
class 类名 implements 接口名 {}
C:接口不能实例化
那么,接口如何实例化呢?
按照多态的方式来实例化。
D:接口的子类
a:可以是抽象类。但是意义不大。
b:可以是具体类。要重写接口中的所有抽象方法。(推荐方案)
由此可见:
A:具体类多态(几乎没有)
B:抽象类多态(常用)
C:接口多态(最常用)
接口和抽象类的最大区别:
1.Java抽象类可以提供某些方法的部分实现,而接口不可以。
在语法上:
1.abstract
class在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。 继承抽象类使用的是extends关键字,实现接口使用的是implements关键字,继承写在前面,实现接口写在后面。如果实现多个接口,中间用逗号分隔。
2.在abstract class中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
4.实现接口的类必须实现其中的所有方法,继承自抽象类的子类实现所有的抽象方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认具有 friendly权限,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public abstract 类型的。
一个类可以实现多个接口,接口弥补了类不能多继承的特点。
接口的特点:
A:接口用关键字interface表示
interface 接口名 {}
B:类实现接口用implements表示
class 类名 implements 接口名 {}
C:接口不能实例化
那么,接口如何实例化呢?
按照多态的方式来实例化。
D:接口的子类
a:可以是抽象类。但是意义不大。
b:可以是具体类。要重写接口中的所有抽象方法。(推荐方案)
由此可见:
A:具体类多态(几乎没有)
B:抽象类多态(常用)
C:接口多态(最常用)
//定义动物培训接口 interface AnimalTrain { public abstract void jump(); } //抽象类实现接口 abstract class Dog implements AnimalTrain { } //具体类实现接口 class Cat implements AnimalTrain { public void jump() { System.out.println("猫可以跳高了"); } } class InterfaceDemo { public static void main(String[] args) { //AnimalTrain是抽象的; 无法实例化 //AnimalTrain at = new AnimalTrain(); //at.jump(); AnimalTrain at = new Cat(); at.jump(); } }
接口和抽象类的最大区别:
1.Java抽象类可以提供某些方法的部分实现,而接口不可以。
在语法上:
1.abstract
class在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。 继承抽象类使用的是extends关键字,实现接口使用的是implements关键字,继承写在前面,实现接口写在后面。如果实现多个接口,中间用逗号分隔。
2.在abstract class中可以有自己的数据成员,也可以有非abstract的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。
3.abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。
4.实现接口的类必须实现其中的所有方法,继承自抽象类的子类实现所有的抽象方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5.接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6.抽象类中的变量默认具有 friendly权限,其值可以在子类中重新定义,也可以重新赋值。
7.接口中的方法默认都是 public abstract 类型的。
相关文章推荐
- Java接口与抽象类区别
- java接口和抽象类的区别
- Java接口和抽象类的区别
- Java接口与抽象类的区别与联系
- 黑马程序员——java接口与抽象类的区别之缺省适配模式
- java接口和抽象类的区别
- JAVA接口与抽象类的区别
- java接口与抽象类的区别
- 面试题-java接口和抽象类的区别
- 浅谈Java接口和抽象类的区别
- java接口与抽象类的区别
- java接口和抽象类的区别
- Java接口与抽象类的区别,(貌似面试常常问到)
- java接口(interface)与抽象类(abstract class)的区别
- JAVA接口与抽象类的区别(部分转载)
- Java接口和抽象类的区别?(抽象类中可以定义变量)
- Java接口和抽象类的区别?(抽象类中可以定义变量)
- Java接口和抽象类有什么区别,什么时候用接口好,什么时候用抽象类好?
- Java接口和抽象类区别
- Java接口和抽象类的区别