5.抽象类,接口

来源:互联网 发布:php二合一网站 编辑:程序博客网 时间:2024/06/05 13:07

理解抽象类的作用

在编写一个类时,往往会为该类定义一些方法,这些方法用来描述该类的行为,那么这些方法都有具体的方法体。但是在某些情况下,某个父类只知道其子类应该包含怎样的方法,但是无法准确的知道这些子类如何具体实现这些方法,例如定义一个Shape(图形)类,这个类中有一个计算轴承的方法getL(),但是不同的Shape子类对周长的计算方式不一样,即Shape类无法准确知道其子类计算周长的方法。

可能有人会提出,既然Shape不知道如何实现getL()方法,那么就干脆不管它。这样不好.最好的解决方案可以使用抽象类。

 

通过继承可以从原有的类派生出新的类,原有的类称为父类或基类,而新的类称为子类或派生类。通过继承机制,派生出来的子类不仅可以得到父类的属性和方法,还可以定义自己的属性和方法。

Java中有一种特殊的类,专门用来作为父类,这种类被称为“抽象类”。抽象类想模板一样,其目的是要设计者根据他的格式来修改并创建新的类。但是抽象类自己不能创建对象,只能通过抽象类派生出来的子类创建对象。

掌握抽象类的特点

◆包含抽象方法的类一定是抽象类.

◆抽象方法和抽象类都用关键字abstract修饰

◆构造方法,static方法都不能定义为抽象方法。

◆抽象方法不能使用private访问控制符修饰。

◆抽象方法只需要声明,不需要实现。

◆抽象类中可以定义构造方法,但是抽象类不能创建对象。

◆子类继承抽象类时,需要重写抽象类中所有的抽象方法,除非子类也是抽象类。

掌握抽象类的语法

◆语法:

[访问控制符] abstract class类名{

0—n个属性;

[修饰符] 返回值类型 方法名([参数列表]){

方法体;

[return 返回值;]

}

[修饰符] abstract返回值类型 方法名([参数列表]);

}


接口(更彻底的抽象类)

理解接口的概念

抽象类是从多个类中抽象出来的模板,如果将这种模板进行的更彻底,则可以提出一种更加特殊的“抽象类”-----接口(interface).接口中没有普通方法,接口中所有方法都是抽象方法。

掌握接口的特点

◆一个类只能继承一个直接的父类,但是一个类可以实现多个接口。(多继承)

◆接口中不能定义构造方法,接口不能实例化。

◆接口中方法全部都是抽象方法,接口中属性全部都是全局常量

◆当一个类实现(继承)某个接口时,他必须实现接口中所有的方法,除非这个类定义为抽象类。

 


 

接口就是一组对类的要求,它反映了一组没有内在联系、不相关的类之间的通讯的协议。

 

掌握接口的语法

◆语法:

[修饰符] interface接口名{

全局常量;

抽象方法;

}