java面试---接口与抽象类的区别

区别:
1.抽象类本质上是一个类,可以被其他类继承,但只能被继承一个;而接口属于interface类型,一个类可以去实现多个interface。

2.抽象类中可以定义各种类型的属性方法,而接口中的成员变量只能是public static final的(省略不写),且只能是方法。

public abstract class abtest {

    private static String str;

    public void test(){
        System.out.println("test");
    }

    protected static String returnStr(){
        return str = "skr~";
    }
}

从设计目的上分析
抽象类可以作为一些现存的类的一个公共特征的提取,一定是重构的时候进行的,先有现有类,然后抽象成的抽象类,然后它们继承于它。尽管抽象类中可以有方法的实现(以静态代码的方式),但是作为抽象类来说,一个抽象的东西,是没办法具体化的,所以抽象类没有办法实例化,从代码角度来看的话也很好理解,若抽象类中有抽象方法,即使能够实例化,那我们又怎么去使用抽象方法呢?
接口更像是对于代码的规范设计,实现了接口的类,必须实现接口规定的方法,接口不管具体的实现方法。
抽象代表着抽离本质,所以抽象是something is a something的过程,接口意味着规范,是something like a something的过程。
当我们关注类本质的时候,我们需要抽象出抽象类,当我们关注类的操作规范的时候,我们才去关注接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值