美文网首页Java技术文章
Java-抽象类与接口

Java-抽象类与接口

作者: 白犬定春 | 来源:发表于2016-02-25 12:53 被阅读0次

    抽象类与接口

    抽象类和接口似乎在功能上没什么区别,主要作用都是为了规范类的行为。然而,既然同时存在这两种概念,那必然有其不同之处。

    抽象类

    什么是抽象类?用abstract关键字修饰的类即为抽象类。其特点是不能创建类的对象,可以包含抽象方法和非抽象方法,抽象方法同样用abstract关键字修饰,且不可以有方法的实现。而衍生类中必须实现抽象方法。

    上代码:
    抽象类
    public abstract class CoderClass { protected void normalMethod(){ System.out.println("我是抽象类的一般方法"); } //抽象方法不能具体实现 protected abstract void codeSkill(); }

    衍生类
    public class JavaClass extends CoderClass { //非抽象方法可重写可不重写 //抽象方法必须实现 protected void codeSkill() { System.out.println("我会用Java搬砖"); } } public class JavascriptClass extends CoderClass { //非抽象方法可重写可不重写 //抽象方法必须实现 protected void codeSkill() { System.out.println("我会用JavaScript搬砖"); } }

    接口

    什么是接口?接口可以看作是抽象类的延伸,接口完全禁止方法的实现,仅仅是声明方法。

    上代码:
    接口
    public interface ISkill { public void english(); }

    实现接口类
    public class HrClass implements ISkill { public void english() { System.out.println("我是hr,我会英语"); } } public class CoderClass implements ISkill { public void english() { System.out.println("我是程序猿,我也会英语"); } }

    二者的区别

    抽象类与接口主要的区别在于使用的情景上,抽象类是同类型对象的行为抽象,接口是不同类型对象的相同行为抽象。并且对于抽象类是采取继承的方式来使用,为单继承,而对于接口来说则是可以同时接入多个接口的。

    例如代码中的例子,对于程序员这一类人来说,都具备编码能力,但是程序员有因为有人是用Java,有人是用Javascript等等不同的语言编码。所以可以将程序员看作抽象类,而编码能力作为抽象方法。Java程序员,Javascript程序员为衍生类,而用Java或Javascript编码的能力作为抽象方法的实现。

    再例如,对于程序员和Hr这两类人来说,双方的工作不同,但是都具备有英语能力,而双方的英语侧重点有有所不同。所以我们将英语能力抽象称为接口方法,不同类的人均可以具备此能力。

    ps:以上为个人见解,如果对读者能有所帮助那真是荣幸之至。如有错误,疏漏之处欢迎批评指正,谢谢。

    相关文章

      网友评论

        本文标题:Java-抽象类与接口

        本文链接:https://www.haomeiwen.com/subject/dabikttx.html