抽象类不能继承接口

1.   抽象类可以继承普通类,但不可以继承接口。    (public abstract class 抽象类 extends 普通类 { })

2.   接口可以继承多接口,但不可以继承抽象类。     (public abstract class 接口1 extends 接口2,接口3 ,接口4 { })

3.   抽象类可以实现单接口。(public abstract class 抽象类 implements 接口1 { })

4.   接口类不可以实现抽象类。

 

===========================================================================

抽象类(abstract class)

抽象类是一种特殊的类,与类的区别只是抽象类不能被实例化,既然不能被实例化(Person p = new Person();),所以抽象类必须被继承,才能被使用。

因为抽象类是特殊的类,本质上还是类,所以抽象类拥有类所具有的一些特征:属性、方法、不带方法体的方法(抽象方法);

抽象类也可以和类一样,实现接口、多接口等,但抽象类区别于类,不需要实现接口下的所有方法。

用途:例如需要一个类,但是不需要有具体执行的代码,那么就可以把这个类写成抽象类。

关键字:abstract

如下,抽象类的写法,这里代码只是给解释一下抽象类的特征

/** 抽象类 */
public abstract class Persion {
  public String name;
  public void eating() {
    System.out.println("Persion --- eating");
  }
  public abstract void running();
}

如果想使用抽象类,那就需要子类继承它

抽象类(Persion)被子类(Man)继承后,就会强迫子类重写抽象类中定义的抽象方法,除非子类也是抽象类。

在子类的方法中自定义可执行代码

/** 子类 */
public class Man extends Persion{
  public void running() {
    System.out.println("Man --- running");
  }
}

如果子类(Man)继承抽象类(Persion)后,那么就可以在测试类里通过抽象类Persion类型去引用子类的实例

/** 测试类 */
public class Test {
  public static void main(String[] args) {
    Persion p = new Man();// 普通类继承抽象类
    p.running();
  }
}

 如果子类也是抽象类,那么可以不用重写父类的方法

/** 子类 */
public abstract class Man extends Persion{
 // 抽象类继承抽象类,不需要重写父类方法
}

接口(interface)

接口不是类,它由关键字interface声明,既然不是类,那接口就需要有自己的书写规范,也可以说“接口就是个规范”。

深层次的问题:为啥要用接口,除了多态的理论,其它的我这里暂时无法解释,因为我还接触不到。。。

接口比抽象类更抽象,接口里不能有变量,但可以有全局静态常量 public static final

public static String str = "ABC"; // 静态变量

public static final String str = "ABC"; // 静态常量

接口可以有方法,但所有的方法只能是“类要实现的方法”,而且是“不带方法体的方法”,也就是抽象方法

接口中的所有方法是抽象方法,默认类型:public abstract

关键字:interface

如下,写一个汽车接口,

public interface Car {
  public String color();// 默认格式:public abstract String color();
}

接口可以继承接口、多接口,从而实现接口之间的多继承。它区别于类,因为类只能继承一个类

public interface Interface03 extends Interface01,Interface02{
 ....
}

这里有必要提几句,既然是做编程,一定要规范必要的关键字的用法,及读法

abstract 是抽象的关键字,例如修饰一个类、一个方法

  public abstract class Persion { }

  public abstract String color();

extends 是继承的关键字,例如子类Man继承父类Persion:

    public class Man extends Persion { }

interface 是接口的关键字,例如接口Car :

    public interface Car { }

implements 是接口实现的关键字,例如Audi类实现Car的接口(也可以说是Audi类是接口Car的实现类) :

    public interface Audi implements Car { }

接口不能实现接口 

public interface Interface03 implements Interface01,Interface02 { // 错误写法
	

}

----------------------------------------------------------------

以上均为个人分析的观点,有问题留言

  • 7
    点赞
  • 7
    评论
  • 7
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值