接口和抽象类相关知识

我们都知道接口和抽象类是Java知识点中重要组成部分,在学习Java的过程中,我们大家最开始可能对于这个知识点就很难弄明白,这是为什么呢?因为接口和抽象类都是Java中实现多态的重要部分,且其有很多相似点,在不熟悉的时候特别容易弄错,所以我今天重新整理了一下相关的知识点,用来和大家一起交流沟通,共同成长。

抽象类

抽象类是Java中一个重要的类,我们都知道Java是面向对象编程的一门语言,其特性:抽象、多态、继承、封装等。这里面多态和抽象都可以说和咱们抽象类相关,那么抽象类是怎么表示呢?那我们来用代码看看?

package com.tang.Class;

abstract class AbstractClass {
    abstract void say();
}

啊这?是不是太简单了?真没错,这个就是最简单的抽象类,是不是和你想的有点不一样,没有?那就算了呗。不过我还需要给大家说一下,关于继承抽象类我们是通过extend进行的,我们还是用代码看一下,简答明了。

package com.tang.Class;

public class tang extends AbstractClass{

    @Override
    void say() {
        System.out.println("hello");
    }
    public static void main(String[] args) {
        new tang().say();
    }
}
package com.tang.Class;
​
public class tang extends AbstractClass{
​
    @Override
    void say() {
        System.out.println("hello");
    }
    public static void main(String[] args) {
        new tang().say();
    }
}

我们看以上代码可以发现,类名和方法名都是通过abstract修饰,这个是个关键点,我们类名必须由abstract修饰,在抽象类中抽象方法也是,但是注意一下哦,我们抽象类不一定只有抽象方法,我们也可以有变量和普通方法呢。除此之外,我们抽象类如果被继承,那么我们就必须实现我们所有的抽象方法,如果没有全部实现,那么我们子类也是抽象类。注意,敲黑板了,抽象类不能实例化,一定不要忘记了,如果我们实例化抽象类会直接报错!

接口

那什么是接口呢?对于很多人第一次接触这个知识点的时候可能有点懵,反正我第一次接触的时候是懵了,小白一枚。接口是比抽象类还抽象,为什么这样说,我们前面讲了抽象类的信息。但是我们接口中所有方法都必须是抽象方法,如果一个类实现接口那么一定要实现该接口的所有抽象方法,如果没有全部实现,那么它也必须定义为抽象类。接口的重要特性来了,别眨眼哈:我们接口的方法默认是public修饰,不能是其他修饰符修饰,除此之外,我们定义变量只能定义为public static final修饰。那我们代码走起:

package com.tang.Class;

public interface Test {
    public final String a = "java";
    public void say();
}

感觉和抽象类很相似,那肯定三;不相似我之前也不会傻傻分不清三,但是我们主要看,抽象类的关键字是abstract,接口的关键字是interface,这个就是根本性原因。那我们实现代码:

package com.tang.Class;

public class TangTest implements Test {
    public static void main(String[] args) {
        new TangTest().say();
    }
    @Override
    public void say() {
        System.out.println("你好,我是接口的实现");
    }
}

大家是不是发现感觉接口的实现类和抽象类的继承类好像都差不多,除了关键字都差不多啊。为什么大家会这样觉得,第一个,我们所举例都是只包含了一个抽象方法,但是抽象类中可以包含普通方法;第二,接口和抽象类的关键字不一样;第三抽象类和接口效率和作用效果也不一样。大家都说接口和抽象类傻傻分不清,那我再给大家用个表格进行对比一样,这样一目了然,大家也能够再次熟悉其不同。

抽象类接口
关键字abstractinterface
实现通过extend进行继承通过implements进行实现
能否实例化不能不能
效率较高较低
修饰符各种修饰符都可public

抽象类是将共有属性进行抽象,我们在之后创建拓展类可以利用抽象类以达到降低代码量,实现代码的重用,

接口是一种约束和规则,为什么这样说,我们一个人定义接口,其他成员分别实现接口的相关方法,有助于我们团队设计开发,提高效率。

以上内容是我对接口和抽象类的理解,如果存在问题,请大家指出以便于改正,感谢大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值