0
点赞
收藏
分享

微信扫一扫

Java之抽象类接口

往复随安_5bb5 2022-03-30 阅读 56
javaidea

文章目录

写在前面

我们要来学习一些更加抽象的东西了,我们学习了多态,知道了什么是动态绑定,不过这还不够,我们一起来看看抽象类,同时我们一起学习什么是接口

抽象类

看看下面的代码

class Shape {
    public void draw() {

    }
}
class Triangle extends Shape {
    @Override
    public void draw() {
        System.out.println("打印一个🔺");
    }
}

我们在多态里面看到了这个代码,发现class shape里面的draw方法没有用,我们是不是可以不实现这个方法,就把它声明一下,我们在Java中是可以做到的,这就是抽象方法。我们需要abstract来修饰(在访问修饰限定前后都一样)

抽象类的特点

  1. 抽象类不能实例化
  2. 它生来就是要被继承的
  3. 抽象类里面可以存在普通成员和方法
  4. 一个普通类继承了抽象类,必须重写所有的抽象方法
  5. 但是仍然可以发生向上转型
  6. 一个抽象类A继承了抽象类B,那么这个抽象类B的抽象方法
  7. 要是这个A才被抽象类继承,抽象类要重写A和B中所有的抽象方法
  8. 抽象类不能被final修饰,也就是抽象方法也不能

image-20220327203344305

image-20220327204214032

说到这里,抽象类还有一些很古怪的特点,我们一起来看看吧.要是一个抽象类继承了一个抽象类会怎们样?

不会发生报错

image-20220327204425676

不过要是一个抽象类A继承了抽象类B,那么这个抽象类B的抽象方法,要是这个A才被抽象类继承,抽象类要重写A和B中所有的抽象方法

image-20220327204909090

image-20220327204933234

接口

接口有是比抽象类还要抽象的知识,我们来看看吧

接口的特点

接口使用interface修饰的,下面就是一个接口

interface IShape {
    
    public abstract void draw();
    default public void func() {
        
    }
}
  1. interface 修饰
  2. 接口当中的普通方法,不能有具体方法的实现,要是非要有,必须加一个default来修饰
  3. 可以存在成员变量,但是必须初始化
  4. 接口可以存在static修饰的方法
  5. 接口里面所有的方法都是public的,可以省略,抽象方法还可以继续省略abstract
  6. 不可以实例化,但是可以向上转型
  7. 类和接口之间的关系是通过implements实现
  8. 普通类必须重写接口所有的抽象方法,default修饰的不用,当然这种也可以重写
  9. 普通类重写接口的抽象方法,访问修饰限定符必须是 public
  10. 一个类可以通过extends继承一个类或者抽象类,但是implements实现多个接口,接口之间 使用逗号隔开.
  11. 接口与接口之间之间是extends关系,意味拓展,也要"父债子尝"

image-20220327211911470

image-20220327211706055

image-20220327212355561

interface IA {
    void a();
}
interface IB {
    void b();
}
class C {
    
}
class D extends C implements IA,IB {
    @Override
    public void a() {

    }

    @Override
    public void b() {

    }
}

image-20220327213328763

image-20220327213703432
@Override
public void a() {

}

@Override
public void b() {

}

}


[外链图片转存中...(img-aFUeR7hf-1648390837753)]





>接口与接口之间之间是extends关系



[外链图片转存中...(img-a50OoUYj-1648390837754)]
举报

相关推荐

0 条评论