【Java】抽象类与接口

抽象类与接口

抽象类

一 概念
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 多使用面向接口编程或面向抽象编程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值