接口和抽象类的区别+super和this的区别

super和this的区别+接口和抽象类的区别 : 
  1.super可以理解成是指向父类对象的引用,可以在子类里,使用super调用父类里被覆盖掉的方 
  法或者变量。this可以理解为指向自身对象的引用,可以调用同一个类中的方法或变量。 
2.静态变量和静态方法都是属于类的,也就是说,可以不用new一个对象,而直接用类来调用, 
  静态变量在内存中只有一份拷贝,类的所有实例共享静态变量。 
3.继承使用extends关键字实现,eg: class Dog extends Animal{}。 
4.接口和抽象类的区别: 
  1.接口体现的是一种规范,抽象类体现的是模板式设计。 
  2.接口里的方法全部是抽象方法,抽象类里可以有方法实现。 
  3.接口里不可以定义静态方法,抽象类里可以。 
  4.接口里的变量全部为静态常量,抽象类里可以有普通变量。 
  5.接口里不可以有构造函数和初始化块,抽象类里可以有。 
  6.一个类可以实现多个接口,但只能继承一个抽象类。 

“接口是完全抽象的成员集合,它的成员都无法在接口定义时实现,我们可以将它看作是为操作定义合同,接口的实现完全留给开发者去做。它们之间的区别,如果认真分析,还是 

有不少的:在JAVA中,类只能是从一个基类继承,所以如果要使用抽象类为一组类提供多态性,这些类必须都是从那个类继承的;接口就不一样了,它不但可以用一个类或结构实 

现多个接口,一个接口还可以有多个实现。” 

抽象类是一种不能实例化而必须从中继承的类。抽象类可以完全实现,但更常见的是部分实现或者根本不实现,从而封装继承类的通用功能,它可以提供已实现的成员,因此,可以 

用抽象类确保特定数量的相同功能,但不能用接口这样做。 
“也就是说,它们在提供多态性的问题上是有差别的 

有个通用的设计思想,如果要设计小而简练的功能块,则使用接口。如果要设计大的功能单元,则使用抽象类。” 

如果使用适当,接口可以成为很有用的工具。但如果使用不当,它们会变得非常棘手,甚至妨碍有效的编程。接口的设计与使用其实是一项高明的艺术。” 

“通过接口与实现的方式,我们可以将同一类型的程序运用在不同的对象上面,而且不必修改原有类,相对子程序必须通过修改源程序代码才能够达到重用的目的,接口与实现不仅 

是伟大的进步,也是境界极高的程序设计艺术。”  

   接口是一种非常有效的编程方法,它让对象的定义与实现分离,从而可以在不破坏现有应用程序的情况下使对象得以完善与进化。接口消除了实现继承的一个大问题,就是在对设 

计实施后再对其进行更改时很可能对代码产生破坏。即使实现继承允许类从基类继承实现,在类首次发布时仍然会使我们不得不为设计做很多的抉择。如果原有的设想不正确,并非 

总可以在以后的版本中对代码进行安全的更改。比如,我们定义了一个基类的方法,它需要一个 Integer 参数,而后来又确定该参数应该为 Long 数据类型。我们无法安全更改原始 

类,因为为从原始类派生的类所设计的应用程序可能无法进行正确编译。这一问题会扩大化,因为单个基类会影响几百个子类。” 

   在应用程序要求很多可能不相关的对象类型以提供某种功能的情况下,用接口适用性会更强;接口比基类更灵活,因为可以定义单个实现来实现多个接口;在无需从基类继承实现 

的情况下,接口更好;在无法使用类继承的情况下接口是很有用的。例如,结构无法从类继承,但它们可以实现接口。” 

“但是,最大的问题还是集中在接口设计上。接口一旦被定义和接受,就必须保持不变,以保护为使用该接口而编写的应用程序。接口发布后,就不能对其进行更改。这是我们进行 

组件设计的一个重要原则,叫做‘接口不变性’。” 
   创建一个接口就是在创建一个定义,接口定义发布后则永远不能更改。接口不变性,就是为了保护为使用接口而编写的现有系统。当接口设计与需求有所出入,确认需要大幅度变 

更时,我们应该创建新的接口。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值