接口和抽象类区别

1、接口与抽象类的异同

总的来说接口与抽象类都是Java面向对象的两个基础机制。

接口和抽象类相同点:

1.都不能被实例化;

2.接口的实现类和抽象类的子类只有全部实现了接口或者抽象类中的方法后才可以被实例化。

接口和抽象类的区别:

1.接口只能定义抽象方法不能实现方法,抽象类既可以定义抽象方法,也可以实现方法;

2.单继承,多实现。接口可以实现多个,只能继承一个抽象类;

3.接口强调的是功能,抽象类强调的是所属关系;

4.接口中的所有成员变量 为public static final, 静态不可修改,当然必须初始化。接口中的所有方法都是public abstract 公开抽象的。而且不能有构造方法。抽象类就比较自由了,和普通的类差不多,可以有抽象方法也可以没有,可以有正常的方法,也可以没有;

5.abstract class 表示的是is a关系(是不是这个对象的一种),interface表示的是like a关系(有没有这个功能)。
抽象类强调的是从属关系,接口强调的是功能。
————————————————

原文链接:https://blog.csdn.net/weixin_43761659/article/details/100050353在这里插入图片描述

2、重载与重写(Override)

谈到接口与抽象类,肯定会引申出方法的重载与重写
重载:方法名字相同,参数不同,返回类型相同,好处就是减少不必要的方法名字开销。(PS:吐槽下 java编译器是这样认为的,但是jvm解析的时候 当方法名字相同参数不同,返回类型也不同的时候,他也会认为这是重载,但是java在执行前要先编译,所以这种情况完全可以忽略掉)
重写:又名覆盖,指的是子类继承父类的方法,对父类的方法内容进行一定的扩展,这也是我们俗称的静态代理。(在这里我提一嘴动态代理(动态代理的底层是继承java中的Proxy方法,然后在程序执行时动态加载扩展你要代理的内容,重要是通多IO流形式的写入写入,Proxy最终的方法是用java Native来写的,也就是C++来完成的此操作))

3、java特性

我们来谈一谈Java的几大特性:封装、继承、多态。

封装: 的目的是隐藏事务内部的实现细节,以便提高安全性和简化编程。封装提供了合理的边界,避免外部调用者接触到内部的细节。我们在日常开发中,因为无意间暴露了细节导致的难缠 bug 太多了,比如在多线程环境暴露内部状态,导致的并发修改问题。从另外一个角度看,封装这种隐藏,也提供了简化的界面,避免太多无意义的细节浪费调用者的精力。

继承: 是代码复用的基础机制,类似于我们对于马、白马、黑马的归纳总结。但要注意,继承可以看作是非常紧耦合的一种关系,父类代码修改,子类行为也会变动。在实践中,过度滥用继承,可能会起到反效果。

多态:,你可能立即会想到重写(override)和重载(overload)、向上转型。简单说,重写是父子类中相同名字和参数的方法,不同的实现;重载则是相同名字的方法,但是不同的参数,本质上这些方法签名是不一样的。
一部分内容来自https://blog.csdn.net/weixin_43761659/article/details/100050353

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值