【面试】五分钟掌握抽象类与接口两者之间的区别

本文详细介绍了抽象类和接口在Java中的特点和区别,包括抽象类不能被实例化、接口的多继承特性、JDK 1.8新增的默认方法和静态方法等。同时,文章强调了抽象类与接口在is-a和has-a关系上的不同,以及在设计模式中的应用,提供了代码示例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

抽象类-Abstract Class

抽象类特点 

代码示例

接口-Interface

接口的特点

代码示例

接口与抽象类的区别总结

语法上的区别

语义上的区别

代码示例

执行结果


        在初中级程序员面试中这是一道很常见的面试题,这题不难但是要想有亮点还是有一定的难度。

接口和抽象类都提供了一个将接口和实现分离的结构化的方法

抽象类-Abstract Class

        在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法,抽象方法只有方法的声明,没有方法体。下面是抽象方法的语法:

abstract void method();

        如果一个类包含一个或多个抽象方法则这个类必须限定为抽象类,反过来一个抽象类中不一定包含抽象方法。

抽象类特点 

1、抽象类不能被实例化,即不能使用new关键字来实例化对象,只能被继承;

2、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法;

3、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public;

4、抽象类中的抽象方法只有方法体,没有具体实现;

5、如果一个子类实现了父类(抽象类)的所有抽象方法,那么该子类可以不必是抽象类,否则就是抽象类;

6、抽象类可以包含属性、方法、构造方法,但是构造方法不能用于实例化,主要用途是被子类调用。

代码示例

        动物都有名字,叫声以及叫;动物在叫时,输出 xxx 的叫声是:xxx;

这样我们就可以抽象一个动物类,并定一个一个模版方法speak和一个抽象方法 getCry();让不同的动物去实现这个叫声。

    /**
     * 抽象动物类,
     * 动物都有名字
     * 动物都会叫
     */
    public abstract class AbstractAnimal {

        private String name;


        /**
         * 不同的动物叫声不同,定义一个抽象方法将叫声的实现由子类实现
         *
         * @return
         */
        public abstract String getCry();

        /**
         * 动物都会叫,这是一个模版,不管什么动物的叫声输出都是一样的
         */
        public void speak() {
            System.out.println(name + "的叫声是:" + getCry());
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
}

   public class Dog extends AbstractAnimal {
        public Dog(String name)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈脩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值