接口和抽象类区别

相同:

        都不能实例化。

不同:

        属性:

                   接口的属性只能被public static final修饰;

                   抽象类属性任意;

        构造方法:

                接口不可定义(因为属性被final修饰属性值不可更改)

                抽象类可以定义。

        方法:

                   接口只能定义抽象方法,方法默认被public abstract修饰;

                   抽象类既可以定义普通方法,也可以定义抽象方法。

        扩展性:

                   接口是多实现;

                   抽象类时多继承。

        使用场景:

                接口:只对行为抽象。

                        举例:猫和狗都是动物,它们都能吃,就可以把“吃”定义为一个接口,用猫类和狗  类实现这个接口,是has a的关系。

                抽象类:对事物整体的抽象。

                        举例:子类继承了父类,但是又对父类中方法的实现不满意,那么可以在父类中修  改抽象方法(所有子类的公共方法),但是子中的代码却不需要改动。

                        如果一个接口中的方法做了更改,那么所有实现这个接口的实现类的非抽象方法都  必须做出相应的改动。

                总结:

                        如果类型中要定义每一个子类都共有的内容,一般定义为抽象类;

                        如果类型中要定义实现类特有的方法,一般提取到接口中;

                        抽象类是一种模板式的定义,而接口则是一种规范的定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值