abstract使用

 Abstract(抽象)可以修饰类、方法
如果将一个类设置为abstract,则此类必须被继承使用。此类不可生成对象,必须被继承使用。 Abstract可以将子类的共性最大限度的抽取出来,放在父类中,以提高程序的简洁性。 Abstract虽然不能生成对象,但是可以声明,作为编译时类型,但不能作为运行时类型。 Final和abstract永远不会同时出现。 
当abstract用于修饰方法时,此时该方法为抽象方法,此时方法不需要实现,实现留给子类覆盖,子类覆盖该方法之后方法才能够生效。 
注意比较: 
private void print(){};此语句表示方法的空实现。 
Abstract void print(); 此语句表示方法的抽象,无实现。 
如果一个类中有一个抽象方法,那么这个类一定为一个抽象类。 反之,如果一个类为抽象类,那么其中可能有非抽象的方法。 
如果让一个非抽象类继承一个含抽象方法的抽象类,则编译时会发生错误。因为当一个非抽象类继承一个抽象方法的时候,本着只有一个类中有一个抽象方法,那么这个类必须为抽象类的原则。这个类必须为抽象类,这与此类为非抽象冲突,所以报错。 
所以子类的方法必须覆盖父类的抽象方法。方法才能够起作用。
只有将理论被熟练运用在实际的程序设计的过程中之后,才能说理论被完全掌握! 


为了实现多态,那么父类必须有定义。而父类并不实现,留给子类去实现。此时可将父类定义成abstract类。如果没有定义抽象的父类,那么编译会出现错误。  
Abstract和static不能放在一起,否则便会出现错误。(这是因为static不可被覆盖,而abstract为了生效必须被覆盖。)


<span style="font-family:'Microsoft Yahei';"><span style="color:#0000ff;">extends</span>可以理解为<span style="color:#0000ff;">全盘继承</span>了父类的功能
<span style="color:#0000ff;">implements</span>可以理解为为这个类<span style="color:#0000ff;">附加一些额外的功能</span>
</span>
<span style="font-family:'Microsoft Yahei';">举个例子,Animal是一个父类,cat,dog,bird,insect都extends了Animal,
但是cat,dog,bird还可以implements比如run,shout这些interface,bird,insect可以implements比如fly这些interface</span>
<pre style="font-size:18px; white-space:pre-wrap; word-wrap:break-word; line-height:26px; background-color:rgb(255,255,255)"><span style="font-family:FangSong_GB2312;color:#333333;">extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,</span><span style="font-family:FangSong_GB2312;color:#0000ff;">JAVA中不支持多重继承,但是可以用接口来实现</span><span style="font-family:FangSong_GB2312;color:#333333;">,</span><span style="font-family:FangSong_GB2312;color:#333333;">extends</span><span style="font-family:FangSong_GB2312;color:#333333;">只能</span><span style="font-family:FangSong_GB2312;color:#0000ff;">继承一个类</span><span style="font-family:FangSong_GB2312;color:#333333;">,implements可以</span><span style="font-family:FangSong_GB2312;color:#0000ff;">实现多个接口</span><pre style="white-space:pre-wrap; word-wrap:break-word"><span style="font-family:FangSong_GB2312;color:#333333;">比如 </span><span style="font-family:FangSong_GB2312;color:#333333;">class A extends B implements C,D,E </span>

interface定义一些方法,并没有实现,需要implements来实现才可用
 
 extend可以继承一个接口,但仍是一个接口,也需要implements之后才可用 
 
  
  
对于class而言,extends用于(单)继承一个类(class),而implements用于实现一个接口(interface)。
interface的引入是为了部分地提供多继承的功能。 在interface中只需声明方法头,而将方法体留给实现的class来做。 这些实现的class的实例完全可以当作interface的实例来对待。 在interface之间也可以声明为extends(多继承)的关系。 注意一个interface可以extends多个其他interface。
 
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值