抽象类和接口

抽象类的特点:
1、如果一个方法为抽象方法,那么必须将该类定义为抽象方法;
2、子类继承抽象类,那么子类必须实现抽象类的抽象方法;
3、抽象类除了抽象方法,还可以定义具体的数据和具体的方法;
4、类即使不含抽象方法,也可以将类定义为抽象类;
5、抽象类不能被实例化;
6、抽象类不能被实例化,抽象类的变量可以引用非抽象类的子类的对象;

 

接口的特点:

1、接口中的所有方法自动的属于public,因此在声明接口方法时,不必提供关键字public;

2、在接口中可以定义常量,接口绝不能含有实例域,也不能含有实现方法;

3、接口不能被实例化,接口没有对象,接口的方法由实现他的类来实现,使用 implements关键字类实现接口;

4、接口的默认方法:当一个类实现了一个接口,不想全部去声明该接口的所有方法,可以把该接口的方法声明

5、类优先:当一个类的超类和接口都定义了同一个方法,当继承该方法时,类优先,接口的方法被忽略;

 

不同和相同:

1、抽象类除了抽象方法以外,可以有具体的实现方法和实例变量,接口绝不允许出现实例变量和实现方法,但可以定义常量;

2、一个类只能继承一个抽象类,而可以实现多个接口;

3、抽象类和接口都不能被实例化;

4、抽象类和接口都可以定义变量,而且变量可以引用他们的实现类的对象;

 

为啥有了抽象类还要有接口的产生呢?

因为抽象类只会被用来继承,Java程序设计语言不允许多继承(多继承会让语言更加复杂),所以需要接口来实现,这样增加了设计的灵活性。

posted @ 2019-02-15 17:19  zfylhl  阅读(109)  评论(0)    收藏  举报