抽象类与接口

1.抽象类

1.1 语法
        一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法
1.2 抽象类特性
      (1)抽象类不能直接实例化对象

      (2)抽象方法不能是 private 的

      (3)抽象方法不能被final和static修饰,因为抽象方法要被子类重写

      (4)抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,
       
          否则子类也是抽象 类,必须要使用 abstract 修饰

      (5)抽象类中不一定包含抽象方法,但是有抽象方法的类一定是抽象类

      (6)抽象类中可以有构造方法,供子类创建对象时,初始化父类的成员变量
1.3 抽象类vs普通类
       唯一的区别:抽象类不能实例化对象,允许出现抽象方法

2. 类的三个职责

(1)放置静态属性、静态方法的位置

(2)实例化对象

(3)被继承
2.1 抽象类(只能被继承)
       最终类(只能被实例化)

       普通类(既可以被实例化也可被继承)
2.2 继承关系中,方法(不是静态方法)的三种形式
     (1)可以被子类重写,也可以不被子类重写:一般方法(出现在普通类、抽象类、最终类)

     (2)专门用来被重写:抽象方法(出现在抽象类)

     (3)不能被重写:最终方法(出现在普通类、抽象类、最终类)

3. 接口

3.1 定义格式
       将class关键字换成 interface 关键字

       提示:

           (1)创建接口时, 接口的命名一般以大写字母 I 开头.

           (2)接口的命名一般使用 "形容词" 词性的单词.

           (3)阿里编码规范中约定, 接口中的方法和属性不要加任何修饰符号, 保持代码的简洁性.
3.2 接口使用
      接口不能直接使用,必须要有一个"实现类"来"实现"该接口,实现接口中的所有抽象方法 (implements)     
3.3 接口特性
   (1)接口类型是一种引用类型,但是不能直接new(实例化)接口的对象

   (2)接口中每一个方法都是public的抽象方法, 即接口中的方法会被隐式的指定为 public   

           abstract(只能是 public abstract,其他修饰符都会报错)

   (3)接口中的方法是不能在接口中实现的,只能由实现接口的类来实现

   (4)重写接口中方法时,不能使用default访问权限修饰

   (5)接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量

   (6)接口中不能有静态代码块和构造方法,允许定义静态方法

          (接口中的属性都为静态属性,被public修饰)

   (7)接口虽然不是类,但是接口编译完成后字节码文件的后缀格式也是.class

   (8)如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类

   (9)jdk8中:接口中还可以包含default方法。
3.4 实现多接口
      •  一个类实现多个接口时,每个接口中的抽象方法都要实现,否则类必须设置为抽象类。

      •  Java 面向对象编程中最常见的用法: 一个类继承一个父类, 同时实现多种接口.

      •  继承表达的含义是 is - a 语义, 而接口表达的含义是 具有 xxx 特性
3.5 接口间的继承
      •  在Java中,类和类之间是单继承的,一个类可以实现多个接口,接口与接口之间可以多继          承

          即:用接口可以达到多继承的目的。

     •  接口可以继承一个接口, 达到复用的效果. 使用 extends 关键字.

4. 接口 vs 抽象类

(1)相同点
         •  不能被实例化

         •  允许出现抽象方法

(2)不同点
         •  接口只能出现抽象方法(默认 public)

            抽象类中可以有属性、普通方法

         •  普通类和抽象类之间是继承(extends)关系,只能单继承

             普通类和接口之间是实现(implements)关系,允许一个类实现多个接口

             接口和接口之间允许继承(extends)关系,多继承

         •  类描述一类事物,接口描述一组能力

5. 类与类,类与接口,接口与接口的关系

    a:类与类:
		继承关系,只能单继承,可以多层继承。
	b:类与接口:
		实现关系,可以单实现,也可以多实现。
		并且还可以在继承一个类的同时实现多个接口。
	c:接口与接口:
		继承关系,可以单继承,也可以多继承。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值