抽象类
一 概念 1 用关键字abstract修饰的方法称为abstract方法(抽象方法)
2 对于abstract方法,只允许声明,不允许实现,也就是只定义相应的方法头,而没有体内容 例如:abstract double getArea( );
3 抽象方法不允许使用static、final、private修饰。
4 抽象类里面可以有抽象方法,也可以没有没有抽象方法,但含有抽象方法的类一定是抽象类。
5 对于抽象类,不能直接实例化对象,即不能使用new运算符创建该类的对象,只能先创建其子类,由子类创建对象。
6 抽象类可以声明对象,作为子类对象的 上转型对象
二 流程:
1 在设计一个程序时,可以先声明一个abstract类,通过在类中声明若干个abstract方法,表明这些方法在整个系统设计中的重要性,方法体的内容细节由它的非abstract子类去完成。 2 然后利用多态实现编程。使用多态进行程序设计的核心技术是使用方法重写和上转型对象,即将abstract类声明对象作为其子类的上转型对象,那么这个上转型对象就可以调用子类重写的方法。 3 所谓面向抽象编程,是指当设计某种重要的类时,不让该类面向具体的类,而是面向抽象类,即所设计类中的重要数据是抽象类声明的对象,而不是具体类声明的对象。
三 例子: 2 用中国移动和联通去继承抽象类卡SIM
接口
定义 接口的定义:Java使用关键字interface来定义一个接口。接口的定义和类的定义相似,分为接口的声明和接口体。 接口的声明格式:interface 接口的名字
接口体中包含常量定义和抽象方法定义两部分 定义接口的一般格式如下:
接口的继承接口用extends
[public] interface 接口名 [extends 父接口名]
{
[public] [static] [final] 数据类型 常量名=常量值;
[public] [abstract] 返回类型 方法名(参数列表);
}
特点 1 接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示。 Java8以前接口中只有常量和抽象方法 2 接口中的变量自动都是public、static,final,可以省略 3 接口中的方法自动为public abstract,可以省略; 4 接口编译后也产生class文件。
5 接口中没有构造方法。 也就不能通过new构建接口的对象,只能像抽象类一样标示数据类型
6 接口也具有继承性,可以继承父接口的所有属性和方法。接口可以通过继承产生新的接口 7 如果实现接口的类不是抽象类,那么这个类必须实现该接口的所有方法。
一个类通过使用关键字implements声明自己实现一个或多个接口。
如:class A implements Printable,Addable{
}
抽象类和接口不同处:
1 抽象类和接口组成不同,抽象类可以有变量、常量、构造方法、普通方法和抽象方法;接口只能有常量和抽象方法(8以后不是)。 2 抽象类和接口都可以有抽象方法。抽象方法把“做什么” 和“怎么做” 分离,虽然代码量增加,但增强了程序的可维护性 3 抽象类和接口的使用方式不同,抽象类通过子类继承,接口通过子类实现 4 抽象类和接口都可以通过“上转型对象”产生实例对象 5抽象类和接口在使用时,抽象类更像 一个模板,接口一般作为标准或表示一种能力 6 多使用面向接口编程或面向抽象编程
|