【Java】抽象类(abstract)、接口(interface)

115 阅读2分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

前言

写在前面的话,不听b站老师的话,不写博客又加之不经常用JAVA,导致现在遗忘十分严重,古人云:亡羊补牢,为时未晚。故今日做补牢之举。勉之!


一、抽象类

抽象类类中可以没有抽象方法,但如果有抽象方法,则该类一定是抽象类。抽象方法只写方法的声明,具体实现交给子类(非抽象类)去实现。

public abstract class Abstract {
    public abstract void run();
}

如上,声明了一个run的抽象方法,具体的实现交给子类。

public class Demo01 extends Abstract{
        @Override
        public void run()
        {
            System.out.println("一直努力的向前奔跑");
        }
}

子类需要先继承抽象类(extends),然后重写父类中所有的抽象方法。

抽象类的特点:

    1、抽象类中没有构造方法,所以不能够直接实例化对象

    2、抽象类中可以没有抽象方法,但有抽象方法的一定是抽象类。

    3、抽象方法需要一个非抽象子类,来继承,重写方法。

    4、抽象类只能单继承,不能够多继承(Class cannot extend multiple classes)

二、接口

接口的本质是契约,最主要的重要是约束和实现的分离 创建一个接口

public interface Demo02interface {
    void walk();
}

用到interface关键字,它和class是同级的。

1、接口中没有构造方法,所以不能直接实例化对象,interface 2、接口中只有常量 public static final 3、接口中不能写方法体 4、所有的方法默认都是抽象的 5、子类需要用implements来使用接口,同时要重写(@Override)接口的方法 6、接口可以实现多继承 接口要用,来分隔(多继承确实牛啊)

接口的多继承

public class Demo03 implements Demointerface,Demo02interface{
    @Override
    public  void run()
    {
        System.out.println("我一直在努力的奔跑");
    }
    public void walk()
    {
        System.out.println("走累了,就歇一会");
    }
}

总结

前路茫茫,与君共勉 安静的进步,快乐的学习