Java的扩展机制之四——抽象类与接口

抽象类:一个为了被继承而存在的类
public abstract class Market {
     public String name;//商场名称
    public String goods;//商品名称
    public abstract void shop();//抽象方法,用来输出信息
}
【1】使用abstract为关键字修饰的类叫抽象类,不可实例化(不能以此创建对象),只能作为其他类的父类
权限修饰符 abstract class   类名 {类体}
【2】使用abstract修饰的方法叫抽象方法,没有方法体,必须被子类重写
权限修饰符  abstract   返回值 方法名 () ;
(1)构造方法不能定义为抽象方法
(2)抽象类的子类可以为抽象类
(3)继承抽象类的子类 如果不是抽象类 必须 重写抽象类的所有抽象方法
(4) 抽象方法只能被定义在抽象类中
(5)抽象类中可定义普通方法
问题:(1)如果一个抽象类的子类只需要使用抽象类中的一部分方法,但他必须重写抽象类的所有方法(2)如果一个类想用其他两个类的方法,Java单继承机制下,没有办法继承两个类    so
接口:纯粹的抽象类
【1】使用interface关键字进行定义
权限修饰符 interface 接口名     【extends 父接口名】{
        【public】 【static】【final】常量
        【public】 【abstract】方法
}
(1)权限修饰符只能为public或default
(2)接口中只能为抽象方法
(3)接口中的变量都是static and final的常量,故必须初始化
【2】类使用implements关键字实现接口
class ParallelogramgleUseInterface implements drawTest {
      public void draw () { // 由于该类实现了接口,所以需要覆盖draw()方法
          System . out . println ( "平行四边形.draw()" ) ;
      }
}
【3】使用
(1)类可以向上转型为父类,抽象父类,所实现的接口
(2)必须实现接口中的所有方法
(3)一个类可以实现多个接口,实现多重继承
public class Me implements IFather , IMather
(4)实现多重继承时可能会出现变量名或方法名冲突,若变量名冲突可用(接口名+.)的方式实现,若方法冲突,只需要实现一个方法
(5)子接口使用extends继承父接口,子类实现子接口时要实现所有子接口与父接口的方法
(6)接口主要使用在类数量较多,继承关系较为复杂的情况下
抽象类与接口的区别:接口是对类的抽象,接口是对行为的抽象,抽象类的功能强于接口,但类只能继承一个类,但能实现多个接口

比较项
抽象类
接口
方法
可以有非抽象方法
均为抽象方法
属性
可有非静态常量
均为静态常量
构造方法
有构造方法
无构造方法
继承
只能继承一个类
可实现多个接口
被继承
一个类继承一个类
一个接口可继承多个接口
(1)子类只能继承一个抽象类,实现多个接口
(2)一个类要实现一个接口必须实现接口中的所有方法,而抽象类不必(所有抽象方法必须被重写,但抽象类中可有一般方法)
(3)抽象类的数据成员可以为各种类型,接口中只能为public static final
一般使用顺序
(1)接口:先对行为进行抽象,定义需要完成的功能
(2)抽象类:提取某些类的相似性
(3)具体类的实现





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值