`

Java中抽象类(abstract)与接口(interface)

    博客分类:
  • Java
阅读更多
1. Java中抽象类abstract

抽象类不能实例化(不能用抽象类创建对象)。
抽象方法就是被abstract修饰的方法,有声明无实现。抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。

如果一个类包含了抽象方法,那么这个类一定是抽象类。
如果一个类是抽象类,它可以包含具体的方法,可以包含抽象方法。
如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。

public class Test {
    public static void main(String[] args){
        R r = new R();
    }
}
abstract class T {
    public abstract void method();
    public void test(){
        System.out.println("test");
    }
}
class R extends T {
    public void method(){
        System.out.println("method");
    }	
}


2. Java中接口interface

接口,英文称作interface,接口泛指供别人调用的方法或者函数。

接口中的变量会被隐式地指定为public static final变量。
接口中的所有方法都是抽象方法(无实现,abstract可以省略)。

类实现了接口(类不是抽象类),必须实现接口中所有的方法。
一个类可以实现多个接口,接口之间用“,”分割即可。
接口类型也可以使用多态。

public class Test{
    public static void main(String[] args){
        MyClass myClass = new MyClass();
        myClass.output();
        myClass.output2();
        myClass.output3();
	}
}
interface MyInterface{
    public void output();
}
interface MyInterface2{
    public void output2();	
}
class MyParent{
    public void output3(){
        System.out.println("output3");
    }
}
class MyClass extends MyParent implements MyInterface, MyInterface2{
    public void output(){
        System.out.println("output");
    }
    public void output2(){
        System.out.println("output2");
    }	
}


3. Java中抽象类abstract与接口interface对比

1) 抽象类中可以有具体方法,也可以有抽象方法;接口中只能有抽象方法,不能有具体方法;
2) 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
3) 接口中不能含有静态代码块以及静态方法;而抽象类可以有静态代码块和静态方法;
4) 一个类只能继承一个抽象类;而一个类却可以实现多个接口;

补充:
1) 抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。例如:飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。我们将Airplane,bird定义为抽象类,将fly定义为接口。继承抽象类是一个“是不是”关系,而接口实现则是“有没有”的关系。
2) 抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。
分享到:
评论

相关推荐

    Java中抽象类和接口的区别

    在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...

    详细解析Java中抽象类和接口的区别

    ### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...

    java 抽象类与接口的练习

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计...通过这样的练习,你可以更好地理解和掌握Java中的抽象类与接口,以及它们在实际开发中的应用。在实践中不断尝试和调试,将有助于深化对这两个概念的理解。

    JAVA中抽象类和接口的区别

    在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制区别

    java抽象类与接口区别

    ### Java抽象类与接口的区别 #### 一、引言 在Java编程中,抽象类(Abstract Class)与接口(Interface)都是实现抽象的关键工具。它们各自有着独特的优势和适用场景,掌握这两者的区别有助于开发者更好地设计系统...

    Java中抽象类和接口的区别与作用详解

    ### Java中抽象类和接口的区别与作用详解 #### 一、引言 在Java编程语言中,`abstract class`和`interface`是两种用于定义抽象类的重要机制。这两种机制不仅支持了Java的强大面向对象特性,而且也在实际开发过程中...

    JAVA中抽象类与接口的区别

    在Java编程语言中,抽象类(Abstract Class)与接口(Interface)是实现抽象与多态性的两种关键机制。这两种机制的出现,极大地丰富了Java语言的面向对象特性,并为开发者提供了更为灵活的设计选择。下面将从多个...

    java中接口与抽象类的详细分析与比较

    在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性的关键...通过阅读"java中接口与抽象类的详细分析与比较.doc"文档,你将获得更深入的洞察和实践指导,进一步提升你的Java编程能力。

    Java 接口和抽象类

    在 Java 中,抽象类使用 abstract 关键字声明。 在上面的练习中,我们使用抽象类来编写 Java 程序。首先,我们创建了一个名为 LivingThing 的抽象类,该类表示生物类。然后,我们创建了两个具体实现类:Human 和 ...

    java中的抽象类和接口的理解

    在面向对象编程语言Java中,抽象类(Abstract Class)和接口(Interface)是实现多态性和代码复用的重要手段。它们都允许开发者定义行为规范而不需要具体实现细节,但它们之间存在一些重要的区别。本文将详细介绍...

    java 抽象类与接口的区别

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们都用于实现多态性,但各自具有不同的特点和应用场景。了解并熟练掌握它们的区别对于编写高质量的Java代码至关重要。 首先,抽象类是一种不能被...

    Java中抽象类与接口的比较.pdf

    Java 语言中,抽象类(abstract class)和接口(interface)是两种支持抽象类定义的机制。抽象类和接口之间存在着许多相似性,但是也存在本质的区别。 一、 抽象类 在 Java 程序设计中,有时需要创建超类,该超类...

    浅析Java抽象类和接口的比较

    Java中的抽象类(abstract class)和接口(interface)都是用于创建抽象化模型的重要工具,它们在面向对象编程中扮演着核心角色。这两种机制都允许我们定义一组方法的签名,但不提供具体实现,从而实现“设计契约”...

    Java源代码:抽象类和接口

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,为其他类提供模板或行为指南。让我们深入探讨这两个概念及其在Java中的应用。 首先,我们来理解抽象类。在Java中,抽象类是一...

    Java中抽象类和接口的区别与联系.pdf

    "Java中抽象类和接口的区别与联系" Java中抽象类和接口是面向对象程序设计语言中两种不同的机制,都是支持类定义的方式。抽象类和接口之间在对于抽象类定义的支持方面具有很大的相似性,但它们之间还是有很大的区别...

    java中的抽象类和接口

    在Java中,抽象类使用abstract关键字声明,而接口使用interface关键字声明。抽象类中可以包含成员变量、构造方法和普通方法,而接口中则不能包含变量的实现,只能声明常量和抽象方法。 四、抽象类和接口的区别和...

    java利用接口和抽象类改写求圆的面积和梯形的面积.docx

    在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性和代码复用的重要概念。它们都无法被直接实例化,而是位于继承结构的顶层,被其他类实现或继承。接口和抽象类都可以包含抽象方法...

    Java抽象类和接口和继承之间关系

    "Java抽象类和接口和继承之间关系" Java抽象类和接口是两种不同的概念,它们之间存在着继承关系。在Java中,抽象类(abstract class)和接口(interface)都是用来描述对象的行为和状态的,但它们之间有着明显的...

Global site tag (gtag.js) - Google Analytics