抽象类和接口

本文详细阐述了抽象类和接口的概念、定义格式及注意事项。对比了抽象类与接口的相似性和差异,包括它们如何被使用、继承和实现的规则。

抽象类和接口

在这里插入图片描述

抽象类

概念

  • 抽象方法所在的类

  • 抽象方法

    • 由于每一个子类的执行的内容是不一样的,所以在父类中不能确定具体的方法体,该方法就可以定义为抽象方法

如果一个类中存在抽象方法,那么该类就必须声明为抽象类

抽象定义格式

  • public abstract 返回值类型 方法名(参数列表):

抽象类

  • public abstract class 类名{}

注意事项

  • 抽象类不能实例化

  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

  • 抽象类可以有构造方法

  • 抽象类的子类

    • 要么重写抽象类中所有的抽象方法
    • 该类也是抽象类

接口

概念

  • 一种规则,是对行为的抽象

接口用关键字interface来定义

接口不能实例化

接口和类之间是实现关系

接口通过implements关键字表示

  • public class 类名 implements 接口名{}

接口的子类(实现类)

  • 要么是重写接口中所有抽象方法
  • 要么是抽象类

注意

  • 接口和类的实现关系可以单实现,也可以多实现

    • public class 类名 implements 接口名1,接口名2{}
  • 实现类还是可以在继承,一个类的同时实现锁个借口

    • public class 类名 extends 父类 implements 接口1,接口2{}

接口中成员变量的特点

  • 成员变量

    • 只能是常量

    • 默认修饰符

      • public static sinal
  • 没有构造方法

  • 成员方法

    • 只能是抽象方法
    • 默认修饰符:public abstract

接口和类之间的关系

  • 类和类的关系

    • 继承关系,只能单继承,不能多继承,但是可以多层继承
  • 接口和接口的关系

    • 继承关系,可以实现单继承,也可以实现多继承
    • 若果实现类实现了最下面的子接口,那么我们可以重写所有的抽象方法

概念

  • 文件夹,用来管理不同功能的Java类,方便后期代码维护
  • 公司域名后写+包的作用(使用其他类时,需要使用使用全类名)
  • 使用同一个包中的类,不需要java.lang 类不需要导包
  • 如果同时使用两个保重的同名类,需要使用全类名

fianl权限修饰符

fianl

  • 最终,一旦被修饰不能被修改

  • 可用于修饰

    • 方法

      • 表明该方法啊是最终方法,不能被重写
      • 表明该方法是最终类,不能被继承
    • 变量

      • 叫做变量,只能被赋值一次
  • 使用场景

    • 当其修饰的方法是一种规则时,不允许被改变
    • final修饰变量必须主动赋值
    • 常量一般作为系统配置信息,方便维护,提高可读性
    • 多个单词:全部大写,单词之间用斜划线隔开
  • 权限修饰符

    • 权限修饰符,用来控制一个成员能够被访问的范围内,可以修饰成员变量方法,构造方法,内部类

    • 成员变量私有

    • 方法公开

    • 特例

      • 如果方法中的代码是抽取其他方法中的共性代码,这个方法也私有

代码块

局部代码块

  • 方法中的一对大括号,作用是提前结束生命周期

构建代码块

  • 谐振器成员位置的的代码内,优先于构造方法执行

  • 作用

    • 吧多个构造方法中的重复代码抽取出来
    • 创建本类的时候,会限制性构造代码块,在执行构造方法
  • 通过this关键最可以调用本类的其它构造

静态代码块

  • 格式

    • static{}
  • 特点

    • 需要通过static关键字修饰,随着类的加载,并且自动触发,只执行一次
  • 在类加载的时候,做出一些数据初始化的时候使用

  • 进行数据初始化并且只执行一次

重点

  1. static 修饰的属性,相较于实例变量,有哪些特别之处(>=3点)

    随着类的加载而加载

    可以调用static修饰的方法

    可以用来修饰类的内部结构

  2. final 可以用来修饰哪些结构,分别表示什么意思?

    方法:表示最终方法,不能被重写

    类:表示最终类,不能被继承

    变量:由final修饰的变量叫做常量,只能被赋值一次,必须手动赋值

  3. 类的属性赋值的位置有哪些?先后顺序为何?

    默认初始化

    代码块中的初始化

    构造器初始化

    通过对象属性和对象方法赋值

  4. abstract 能修饰哪些结构? 修饰以后,有什么特点?

    类:抽象类不能被实例化,抽象类不一定有抽象法方法,可以有构造方法,抽象类的子类要么是抽象类,要么重写抽象类中的所有抽象方法

    方法:在父类中不确定具体的方法体就用抽象类

  5. 接口是否能继承接口? 抽象类是否能实现(implements)接口? 抽象类是否能继承非抽象的类?

  6. 接口可以继承接口,抽象类不可以继承接口,但可以实现接口,抽象类不一定能继承非抽象类

    ,这取决于实体类是否含有明确的构造方法

  7. 抽象类和接口有哪些共同点和区别?

    接口不能用于实例化对象

    接口没有构造方法

    接口中所有的方法必须是抽象方法

    接口中不能包含成员变量,除了static和final

    接口不能被类继承,可以被类实现

    接口支持多继承

  8. 抽象类中的方法可以有方法体,能够实现方法的具体功能,接口没有方法体

    抽象类的成员变量可以是各种类型,接口中的成员变量只能用public static final修饰

    接口中不能含有静态代码块以及静态方法

    一个类只能继承一个抽象类,却可以实现多个接口

例题

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值