抽象类和接口

目录

抽象类

定义

抽象方法和普通方法的区别

抽象类与抽象方法的使用

接口

接口的特性

面向接口编程

面向接口的优点

抽象类与接口的联系和区别:


抽象类

定义

抽象类 定义语法:访问修饰符 abstract class Classname { } 

抽象类要用Abstract修饰

普通类可以实例化,抽象类不能实例化。

抽象类就是用来继承的,如果一个抽象类没有被继承,那么它将没有任何意义,因为你不能用它做任何事情。

如果一个父类的某个方法实现起来没有任何意义,必须通过子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。

抽象方法 语法:

访问修饰符    abstractclass    class   ClassName {

访问修饰符   abstract 返回值类型 方法名(参数列表)

}

抽象方法和普通方法的区别

普通方法必须要有方法体,抽象方法不能有方法体(大括号也没有); 

抽象方法要有Abstract修饰

抽象方法必须存在于抽象类中

抽象类与抽象方法的使用

抽象类中可以没有抽象方法,但包含抽象方法的类必须被定义为抽象类;

如果子类中没有实现父类的所有抽象方法,子类必须被定义为抽象类;

没有抽象构造方法,也没有抽象静态方法;

抽象类中可以有非抽象的构造方法,创建子类的实例时可以调用。

接口

接口是一种规范或标准,它们可以约束类的行为,是一些方法特征的集合,但实际没有方法的实现。

定义接口的语法

访问修饰符 interface 接口名 extends 父接口1,父接口2,.......{

        //常量定义

        //方法定义

}

类实现接口的语法

访问修饰符 class 类名 extends 父类名 implement 接口1,接口2,......{

        //类成员

}

接口的特性

接口的命名规则与类相同。如果修饰符是public,则该接口在整个项目中可见;如果省略修饰符,则该接口只在当前包可见。

接口中可以定义常量,不能定义变量。接口中的属性都会自动用public static final 修饰,即接口中的属性都是全局静态常量。

接口中方法自动用public  abstract修饰,接口中所有方法都是抽象方法。

接口不能实例化,接口中不能有构造方法。

接口直接可以通过extends实现继承关系,一个接口可以继承多个接口,但是接口不能继承类。

接口的实现类必须实现接口的全部方法,否则必须定义为抽象类。

接口表示一种能力,体现在接口的方法上,一个类实现了某个接口,就表示这个类具备了某种能力。

接口表示一种约定,有些接口只有名称。

面向接口编程

程序设计时,关心实现类有何能力,而不关心实现细节。

面向接口的约定而不考虑接口的具体实现。

面向接口编程就是先把客户的业务逻辑线提取出来,作为接口,业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,替换该接口的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。

面向接口的优点

1、降低代码间的耦合性

2、易于程序的扩展,提高了程序的可扩展性

3、提高了程序的可维护性

接口体现可约定和实现分离的原则

面向接口编程就意味着:开发系统时,主题架构使用接口,接口构成系统的骨架,这样就可以通过更换实现接口的类来实现更换需求。

抽象类与接口的联系和区别:

相同点:

代表系统的抽象层

都不能被实例化

都能包含抽象方法:用于描述系统提供的服务,不必提供具体实现

不同点:

在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法

抽象类便于复用,接口便于代码维护

一个类只能继承一个直接的父类,但可以实现多个接口
 

你可能感兴趣的:(java,开发语言)