抽象和接口类

9 篇文章 0 订阅

抽象和接口类

抽象类

在这里插入图片描述

抽象方法 : 没有方法体的方法。

抽象类:包含抽象方法的类。

public abstract calss Animal{	
	public abstract void eat();
}
  • 不能直接new抽象类方法
  • 必须用一个子类来继承extents抽象父类
  • 继承抽象类的子类必须重写父类所有的抽象方法
  • 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

接口类

在这里插入图片描述

 public interface 接口名称 {
     //1. 抽象方法
     public abstract void method();
     //2. 默认方法:供子类调用或者子类重写
     public default void method() {
        // 执行语句
     }
     //3. 静态方法: 只能使用接口名调用,不可以通过实现类的类名或者实现类的对象调用
     public static void method2() {
        // 执行语句    
     }
     //4. 私有方法:供接口中的默认方法或者静态方法调用。
     private void method() {
        // 执行语句
     }
 }

非抽象子类实现接口:

  • 必须重写接口中所有抽象方法。
  • 继承了接口的默认方法,即可以直接调用,也可以重写。
  • 接口的多实现:一个类是可以实现多个接口的
class 类名 implements 接口名 {
    // 重写接口中抽象方法【必须】
   // 重写接口中默认方法【可选】
}

不同点:

  • 每个类只能继承一个抽象类,但是可以实现多个接口

    • 接口和抽象类的概念不一样。接口是一种公共的规范标准,这个可以理解为接口是对动作的抽象,抽象类是对根源的抽象(即对本质的抽象与其他类的本质不同)。
  • 抽象类中不一定都是抽象的方法,也可以有具体实现的方法,这样就可以把大家公用的方法提升到抽象类中,然后具体的方法可以留给子类自己实现(此处经典的应用,模板方法设计模式)。所以抽象类可以更好的实现代码的复用

  • 目的不同:

    • 接口的设计目的,是对类的行为进行约束。它只约束了行为的又无,但不对如何实现精细限制;
    • 抽象类的设计目的,是代码复用。当不同的类具有某些相同的行为,且其中一部分行为的实现方式一致时,可以让这些类都派生于一个抽象类。
  • 本质:

    • 抽象类时对类的本质的抽象。抽象类包含并实现子类的通用特性,而子类差异化的特性由子类来实现。
    • 接口是对行为的抽象,核心是定义行为。即实现类可以做什么。
  • 使用场景:当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值