第5章 抽象类与接口

Posted 啊...这

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第5章 抽象类与接口相关的知识,希望对你有一定的参考价值。

抽象类:只有方法名,而没有方法体的类,就称之为抽象类.

作用:当父类只是知道子类应该干什么,但是不知道子类该如何去实现这些方法,这种时候就应该使用抽象类和抽象方法,在子类中再去具体实现抽象方法.

语法:

abstract class 类名{
//抽象类需要用abstract修饰符来修饰
public abstract 返回值类型 方法名(参数);
//抽象方法也需要用到abstract方法来修饰

}//要使用抽象类的时候直接extends继承即可

特点:1、抽象类和抽象方法都需要被abstract修饰,并且抽象方法一定要定义在抽象类中.

  2、抽象类不能直接创建对象,因为调用抽象方法没有意义

  3、只有覆盖重写了抽象类中的所有抽象方法后,其子类才可以创建对象,否则该子类还是一个抽象类

  4、抽象类中可以不定义抽象方法(所以包含抽象方法的类一定是抽象类,抽象类也可以定义非抽象方法)

 

接口

接口是比抽象类更抽象的"类".接口只描述所应该具备的方法,并没有具体实现.

具体的实现由抽象类的实现类(子类)来实现.

优点:将功能的定义与实现分离,优化了程序设计.

语法:

public interface 接口名
{
    修饰符 返回值 抽象方法1();
   修饰符 返回值 抽象方法2();
   修饰符 返回值  抽象方法3();
}
class 实现类名 implements 接口名
{
    抽象方法1实现(){};
    抽象方法2实现(){};
    抽象方法3实现(){};
}

  实现类的抽象方法的修饰符和返回类型、参数必须和接口定义的一样.

 

继承父类同时实现接口:

一个子类可以同时继承一个父类和实现一个接口

当一个子类继承了一个父类,同时他又需要其他的

功能的时候,接口就派上用场了.

语法:

class Dog extends 子类 implements 接口
{
    //接口实现
}

 

接口的多继承:

类之间可以通过继承来产生关系,但只支持多层继承,而不支持多继承.而接口和类使用implements(实现)来产生关系

同样,接口之间也可以使用extends进行继承,而且一个接口还能同时继承多个接口

语法:

interface 接口名 extends 接口名1,接口名2,接口名3{
//子接口不需要去实现父类接口的方法
}//父接口之间用逗号隔开

 

课后习题

1、接口和抽象类的异同是什么?

  1、接口中只有抽象方法,而抽象类中不一定有或只有抽象方法,还能有普通方法和成员变量.

  2、抽象类和接口都不能用来实例化对象.

  3、接口可以多继承,而抽象类不行

  4、一个类可以实现多个接口,但只能继承一个抽象类

  5、抽象类可以有构造函数,而接口不能.

2、接口和父类的异同是什么?

  1、接口中只能有抽象方法(只有方法描述而没方法实现),而父类中不能拥有抽象方法,可以拥有普通方法(需要有实现)和成员变量.

  2、接口不能实例化对象,而父类可以.

  3、一个子类可以实现多个接口,但只能继承一个父类.

  4、接口使用implements关键字实现,父类使用extends来继承

以上是关于第5章 抽象类与接口的主要内容,如果未能解决你的问题,请参考以下文章

第10章 接口

抽象类与接口

抽象类与接口

抽象类与接口

抽象类与接口

抽象类与接口