JAVA-"abstract"与"接口(interface)"

来源:互联网 发布:梧桐一叶落而天下知秋 编辑:程序博客网 时间:2024/06/08 12:59

今天说一说抽象的(abstract)与接口(interface)

我要先告诉大家的是它的作用是可以修饰方法及抽象类的,

那么再说一说它的作用,大家可以想象一下,在子类与父类继承中,子类继承了父类,会发生重写的关系,

好比如,父类有一百元,那么继承他的子类也有一个钱的方法,但是每个人手中的钱是不一样的,

需要每一个子类重写,这样父类就没有了存在的意义了,但是恰恰相反,他的存在是起到了格式化的作用(可以理解为规范的作用)

比如!正常的我们是这样写

public void 类名(){

方法体;

}

但是我们要把它的方法体去掉!改为

public abstract void 类名();

我刚刚第二句就说了,abstract是可以修饰方法与抽象类的

它修饰的方法是没有方法体的,我们称它修饰的方法为抽象方法(别问我为什么?我也想知道为什么叫这名字。。。)

那么叫这名字就有它的独特之处了!这抽象方法是只能存在于抽象类中

他的特殊之处还不止这些,

当某一个子类继承了抽象类(父类),那么这个类就必须重写抽象类中的所有抽象方法(有几个写几个)

但是也不是绝对的,抽象类中可以有抽象方法,也可以有普通方法

当然了如果碰见了一个父类有多个子类的,那么这就麻烦了,这时,有一个懒办法!!!

将子类也加上abstract,但是!!!谁继承了这个子类,那么对不起,

你要不写有多少个父类是abstract,你就重写几遍,要不就继续往下坑!!!

反正到最后你得写够有你的多少父类写了abstract,你就重写几遍,要不写?对不起!报错!!!

但是坑完了,对不起!接着出现问题!抽象类还不能被实例化(不能创建对象)!!!

抽象类存在的意义只是被子类继承,仅此而已!!!

然后该讲接口(interface)了

小心了,接口可是最像抽象类的哦!!!

接口是一个特殊的抽象类

接口中所有的方法都是抽象方法,并且接口中所有的方法都是默认使用public  abstract修饰的

定义的格式:
public   interface  接口名{ }

这个的类名是特别严谨和强势的,谁继承我的接口,那么他的方法名就得和这个一样!!!

那怎么写方法体?还写public void 加类名?

别忘咯我刚刚写的啥!

接口中所有的方法都是抽象方法

所以写方法体还是要写抽象方法的。

但是是不允许是私有的!必须是公共的抽象方法

当然了,其实不写abstract也是可以的,这就牵扯出了他的另一个特性!

接口中所有的方法都是默认使用public  abstract修饰的!!!

接口中所有属性(变量)都是默认使用public static final修饰的,但必须给定初始值

同样,接口与上面一样,同样是不能被实例化的。

因为类与接口不是一种东西,所以,不能是继承关系,只能是实现关系!即类实现接口

直接在类名后面写implements 加父类名即可

这时候,类既然实现了该接口,那么就必须重写接口中的所有方法

类是同样多实现的,即一个类可以实现多个接口,接口之间使用,分割“,”

类是单继承,多实现的(一个类只能继承一个父类,但是可以实现多个接口)

接口之间是允许继承的,类与类是允许继承的,类与接口是实现

那如何实现又继承又实现?

可以先继承后实现

最后,还是那句,新手上路,请多包涵!!!

阅读全文
0 0
原创粉丝点击