理解接口和抽象类

1. 接口

1.1 接口的概述 

接口是功能的集合,接口只描述所应该具备的方法,并没有具体的实现,具体的实现由接口的实现类来完成。

1.2 接口定义的格式

    Public interface 接口名{

      属性(常量,值固定不变,不能修改)      

      方法(抽象方法)
        }

   属性:public static final 数据类型 变量名 = 数据值;
   方法:public abstract 返回值类型  方法名(参数列表);

  接口中的成员都是固定格式!!!

1.3 类实现接口的方式

    Public class 类名 implements 接口名{

             重写接口中的所有方法;
        }

1.4 接口的注意事项

  • 接口不能创建对象。
  • 接口中可以定义变量,固定修饰符 public static final,也可以叫做常量,值不变。
  • 接口中可以定义方法,固定修饰符 public abstract。
  • 接口没有构造方法。
  • 接口与接口之间可以继承,并且多继承!使用extends关键字。

2. 抽象类

2.1 抽象类概述

犬的行为是吼叫和吃饭,缉毒犬的行为是吼叫、吃饭和缉毒,由于犬的种类很多,它们吼叫和吃饭的方式不一样,在描述的时候不能具体化,也就是吼叫和吃饭的行为不明确;在描述行为的时候,行为的具体动作不能明确,这时可以将这个行为写为抽象行为,那么这个类也就是抽象类。在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。

2.2 抽象类特点

a:抽象类和抽象方法必须用abstract关键字修饰

      抽象类格式:       abstract class 类名 {}

      抽象方法格式:    public abstract 返回值类型 方法名();

b:抽象类不一定有抽象方法,有抽象方法的类一定是抽象类

c:抽象类中有构造方法,抽象类不能进行实例化,那么要构造方法有什么作用呢?

      用于子类访问父类数据时的初始化。

d:抽象类不能实例化那么,抽象类如何实例化呢?

      按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。

e:抽象类的子类

      要么是抽象类。

      要么重写抽象类中的所有抽象方法的具体类。

2.3 抽象类的成员特点

A:抽象类的成员特点

      a:成员变量:既可以是变量,也可以是常量。

      b:构造方法:有。

            用于子类访问父类数据的初始化。

      c:成员方法:既可以是抽象的,也可以是非抽象的。

B:抽象类的成员方法特性
        a:抽象方法         强制要求子类做的事情。
        b:非抽象方法     子类继承的事情,提高代码复用性。

3. 接口与抽象类的对比

A:相同点

  • 都不能创建对象。
  • 都可以写抽象方法。
  • 都可以被其他类继承或实现。

B:区别

  • 抽象类中可以写普通方法,但接口不可以写,接口中只能包括抽象方法。
  • 抽象类中可以定义成员变量,接口中只能定义常量。
  • 抽象类有构造方法,(可以为成员变量初始化,也可以让子类使用super调用),接口中没有构造方法。

C:选用

  • 优先选用接口,尽量少使用抽象类。
  • 需要定义子类的行为,又要为子类提供共性功能时才选用抽象类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值