JAVA学习日志7(抽象类和接口)

JAVA学习日志7

抽象类
一种不能被实例化的类,其成员方法是对若干子类方法的抽取
1.语法: 访问控制修饰符 abstract class 类名{成员}

  • 抽象方法
    抽象方法只能存在抽象类(或 接口)中,抽象方法没有任何方法体,他在抽象类中的作用是提出这样的一个方法,让子类去实现(实际是重写)这个方法在这里插入图片描述
  • 抽象类的特点
  1. 抽象方法和抽象类都是要abstract关键字修饰
  2. 抽象方法只能存在于抽象类(或接口)中,抽象类中也可以存在普通方法
  3. 抽象类不能被实例话
  4. 继承了抽象类的子类,必须实现父类里全部的抽象方法,如果子类也是抽象类则不用区实现
  • 抽象类中的成员
    1.抽象类中的成员变量不能用abstract修饰
    2.抽象类可以有构造方法(虽然抽象类不能实例化),主要是用来让子类调用( super()),从而借助子类来给成员变量赋值
    3.抽象类中的抽象方法子类必须重写,普通方法其实也是用来给子类进行重写但没有强制性要求

接口
定义了规范 和 约束,接口里定义的全部是抽象的方法,实现这个接口的类必须全部实现这些方法

  • 使用接口的好处:
    1.对接口的实现类进行约束
    2.方法与申明与具体的实现进行的分离 ,代码结构清晰 降低代码的耦合度
  • 定义语法 访问修饰 符 interfance 接口的名字{ }
    在这里插入图片描述
  • 注意事项
    1.接口中只能有抽象方法不能有普通方法
    2.如果接口中的方法没有写 abstract ,依旧会把它当作抽象函数,因为有默认 的 public abstract 修饰符
    3.接口不能被实例化
    4.jdk1.8后可以在接口中定义静态方法
  • 接口的实现类
  1. 语法: (一个类可以实现多个接口,实际上解决了java中无法多继承的问题)
    public class 类名 implements 定义的接口1,定以接口2{
    }
  2. 接口的实现类 实现接口中的所以的 抽象方法(不包含静态方法)
  3. 通过实现具体实现类来进行调用(多态中的向上转型),接口中定义的静态方法 必须通过接口名字.方法名来进行调用 ,不能实例化对象来进行调用
    .在这里插入图片描述
  • 接口中的成员
    1.接口中是没有变量 只有常量,默认会用 public static final 来进行修饰
    2.接口中常量 必须在申明的时候 就给其进行赋值(因为接口无法初始化成员)
    3.接口中的常量都需要大写 单词与单词 下划线进行分割(参考常量的命名规则)
    在这里插入图片描述
    4.接口中没有构造方法 因为构造是实例化对象 或者是成员变量来进行赋值 ,而接口是不能实例化的。 接口没有变量 所以也不需要构造方法
    5.接口中必须都是 抽象方法 但是jdk1.8以后 可以存在静态方法 静态方法是只能通过接口的名称来调用
  • 类与类 接口与类 接口与接口之间的关系
    1.类与类之间是单继承的 ,但类可以实现多个接口
    2.接口之间可以继承,且支持多继承
    3.抽象类 与接口
    相同点:
    1.都不能实例化 对象
    2.都可以来定义抽象方法
    3.接口与抽象类中的方法 都是为 给子类进行重写
    不同点:
    1.接口可以多继承(实现),抽象类 不可以多继承
    2.接口中所以 的方法都必须是抽象方法 ,抽象类中可以有普通方法也可以有抽象方法
    3.抽象类可以成员变量 可以构造方法 接口 里没有成员变量 与构造方法

匿名内部类
1.没有名字的内部类 就称为匿名内部类
2.前提条件 1.必须是抽象类 2.必须是一个接口
3.语法: (注意末尾的分号)
new 抽象类或者是接口(){
实现的抽象方法
};

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值