抽象类+接口

抽象类+接口

抽象类

当我们定义一个父类的时候,有些方法可能需要子类去做具体的功能,而在父类中并不能确定做哪些功能,那么我们就可以将这些方法定义成抽象方法.所谓的抽象方法就是没有方法体的方法.那么我们的类也必须定义这个类为抽象的类.

抽象类的格式

  • 抽象方法和抽象类需要使用特定的修饰符进行修饰,这
    个修饰符就是 abstract
  • 抽象类的格式为 public abstract class 类名 { }
  • 抽象方法的格式为 public abstract 返回值类型 方法名(参数);

抽象类的特点

  • 抽象类和抽象方法都需要被abstract修饰。抽象方法一 定要定义在抽象类中。abstract 关键字一般修饰方法和类。
  • 抽象类不可以直接创建对象,原因:调用抽象方法没有意义。
  • 只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类得定义成抽象类。
  • 子类重写父类的抽象方法的时候要去掉abstract关键字

抽象类的注意问题

  • 抽象类因为需要子类去实现,所以肯定得是一个父类

  • 抽象类可以不定义抽象方法,意义在于,不让该类创建对象,方法可以让子类使用

  • 一个方法如果没有方法体,则必须使用 abstract 进行修饰

  • 抽象方法 是没有方法体的 一般等待他的子类去重写该抽象方法

  • 声明抽象类的格式 public abstract class 类名{ }

  • 声明抽象方法的格式 public abstract 返回值类型 方法名(参数);

  • 抽象方法是有构造方法的,用于创建子类对象时,把抽象类中定义的成员变量和实例方法加载进子类对象内

    子类继承父类 那么子类一定要重写抽象父类中的所有抽象方法,否则编译失败

抽象关键字abstract不可以和哪些关键字共存?

  1. private:私有的方法子类是无法继承到的,也不存在覆盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法。互相矛盾。
  2. final:最终的,最后的 。它可以修饰类 也i可以修饰变量 也可以修饰方法 如果final修饰类 代表这个类是个最终类 也就是所这个类的内容不允许发生变化 所以 final 类是没有子类的。因为被final定义的方法不能被重写,而抽象方法需要子类去重写进行实现功能,所以矛盾final修饰变量 代表这个变量变成了常量 常量是不允许二次修改的。
  3. static:静态的,本地的。表明该信息是属于类的。不是属于对象的,被static 修饰的物体被所有的由该类创建的对象共享。
  4. 如果修饰方法 代表该方法是静态方法 ,属于类的 它的调用使用类来进行调用 :类名.静态方法名();因为static不用实例化可直接调用,即当前类就直接能够调用了,而abstract需要子类实现后才能调用,所以矛盾。
  5. 如果一个类是抽象类,那么想要对该类进行实例化,那么必然要对该抽象类当中的所有抽象方法进行重写才能,否则编译失败。

接口

SeriaLizable:序列化

Comparable :比较器

CharSequence:字符序列

  1. 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”。

  2. 类和接口都是一种数据类型----->引用类型

  3. 接口中只允许出现抽象方法,不能出现非抽象方法

  4. 接口的源文件也是java文件,编译后的文件也是class,所以可以把接口看作一个特殊的类

    • 在接口中不能定义变量,只能存放常量
    • 常量前面的public static final关键字可以选着省略
    • 在接口中不能存放普通成员方法,可以存放抽象方法
    • 但是可以存放默认方法,就是由default修饰的方法
    • 在接口中,不允许使用private
    • 接口的子类(实现类)不用去重写接口中的定义的默认方法
    • 对于默认方法在子类当中
  5. 接口的声明使用interface来创建的

    • 接口也可以理解成类====>接口类
    • 接口在声明出来时一般也是作为父类使用的
    • 接口的子类和接口父类两者之间是一种实现关系 implement
    • 类与类之间只能单继承 不能多继承
    • 接口与接口当中可以单继承也可以多继承
    • 为什么类与类之间只能单继承 ,而接口与接口当中可以多继承?
    • 我们以后的编程要遵循“高内聚,低耦合”
      6.接口中的成员变量 默认修饰符public static final

接口的意义

扩展原有类的功能
设定了规则
降低耦合性

接口和抽象类区别(面试题)!!!

  • 相同点:
    都位于继承的顶端,用于被其他类实现或继承;
    都不能直接实例化对象;
    都包含抽象方法,其子类都必须覆写这些抽象方法;
  • 区别:
    抽象类可以定义非抽象方法,避免子类重复实现这些方法,提高代码重用性;
    接口只能包含抽象方法;
    一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)
    类与类之间只能是单继承(包括抽象类),接口与接口之间可以是多实现抽象类可以定义普通的成员变量,接口只能定public static final的成员变量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值