`

interface和abstract类的异同

阅读更多
1、jdk 1.8 之后,interface中的方法可以有方法体
  
public interface InterfaceTest {

    [color=red]public static void method(){
        System.out.println("this is interface test ......");
    }

    public default void methodOne(){ //该方法可以在实现类中从写
        System.out.println("this is interface test");
    }[/color]

    public void methodTwo();
}
   


interface和abstract相同点:

   1、都不能被实例化
不同点:

 
类型abstract classinterface
定义abstract  class u关键字interface关键字
继承抽象类可以继承一个类和实现多个接口接口可以继承接口,子类可以实现多个接口
访问修饰符抽象方法可以有public、protected和default接口方法默认修饰符是public,其他修饰符不可以使用
方法实现可定义构造方法、抽象方法和具体方法接口类没有构造方法,jdk1.8之后方法可以有方法体
实现方式子类使用extends关键字来继承抽象类,如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
作用方法复用可以降低程序模块之间的耦合


示例:

  abstract类:

 
 public abstract class AbstractedClass {
    protected String getStringStr() {
        System.out.println("this is a abstract class method");
        return "";
    }

    public AbstractedClass (){
        System.out.println("this is a abstract construct");
    }

    public abstract String testAbstract();
}


  interface类:

 
 public interface InterfaceTest {

    public static void method(){
        System.out.println("this is interface test ......");
    }

    default void methodOne(){
        System.out.println("this is interface test");
    }

    void methodTwo();
}


实现类:

 public class InterfaceExtend extends AbstractedClass implements InterfaceTest {

    @Override
    public void methodTwo() {

    }

    public static void main(String [] args){
        InterfaceExtend interfaceExtend = new InterfaceExtend();
        interfaceExtend.methodOne();
        InterfaceTest.method();
        interfaceExtend.testAbstract();
        interfaceExtend.getStringStr();
        AbstractedClass abstractedClass = new InterfaceExtend();//上转型
        abstractedClass.getStringStr();
    }

    @Override
    public String testAbstract() {
        return null;
    }
}
分享到:
评论

相关推荐

    简述抽象类和接口的区别-java接口和抽象类异同.docx

    - 抽象类是一种特殊的类,它可以包含抽象方法(没有具体实现的方法)和具体方法(有具体实现的方法)。 - 抽象类不能被实例化,只能作为其他类的父类。 - 子类可以通过继承抽象类来复用其中的具体方法,并必须实现...

    创建型模式之抽象工厂模式(Abstract Factory Pattern)

    1. 抽象工厂(Abstract Factory):这是模式的核心,它是一个接口或抽象类,定义了一系列创建对象的方法,但并不直接实例化具体的对象。这些方法用于创建一系列相关或相互依赖的对象。 2. 具体工厂(Concrete ...

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

    在Java编程语言中,接口(Interface)和抽象类(Abstract Class)都是用于实现多态性的关键概念,它们各自有特定的用途和优缺点。本文将深入探讨这两种概念,帮助你理解它们之间的区别以及如何在实际开发中选择使用...

    解析在C#中接口和类的异同

    在C#编程语言中,接口(Interface)和类(Class)都是用来定义对象行为的关键概念,但它们在设计和用途上存在显著差异。本文将详细阐述接口与类的异同,帮助开发者更好地理解和运用这两种机制。 **不同点:** 1. *...

    C#.Net中类与结构的区别

    在C#.Net编程语言中,类(Class)和结构(Struct)是两种基本的类型,它们都用于封装数据和行为,但它们之间存在着显著的区别。理解这些差异对于编写高效、可维护的代码至关重要。 首先,从示例来看,类和结构在...

    Java 接口和抽象类区别

    为了实现这一目标,Java提供了接口(Interface)和抽象类(Abstract Class)两种机制。理解它们之间的区别对于Java开发者来说至关重要。这篇文章将深入探讨Java接口与抽象类的异同,并通过实际例子来阐述它们在实际...

    Java语言的接口与抽象类

    Java语言的接口与抽象类是面向对象编程中的关键概念,它们在设计模式和代码组织中起着重要作用。这里我们将深入探讨这两个概念,并分析它们的异同。 首先,接口(Interface)是Java中的一种特殊类型,它通过使用`...

    Java抽象类与接口课程案例的教学设计.pdf

    在Java中,使用`abstract`关键字来声明一个类为抽象类,而抽象方法则用`abstract`关键字和没有方法体的方式定义。 接口则更像一种完全抽象的合同,它只包含常量和抽象方法。接口的目的是定义一个行为规范,任何实现...

    java面试宝典

    29、abstract class 和interface 有什么区别? 10 30、Static Nested Class 和Inner Class 的不同? 11 31、java 中会存在内存泄漏吗,请简单描述。 11 32、abstract 的method 是否可同时是static,是否可同时是native...

    抽象类与接口的练习

    1. **抽象类(Abstract Class)**: - 抽象类是不能实例化的类,它通常包含抽象方法,这些方法没有具体实现,由子类来完成。 - 抽象类可以有构造函数,用于初始化子类对象。 - 抽象类可以包含非抽象方法(即已有...

    C#题目(工作笔试面试、考证)

    2、C#的类和接口有什么异同? 答:不能直接实例化接口,接口不包含方法的实现。接口、类和结构可从多个接口继承。 三、XML技术 1、列举一下您所了解的 XML 技术及其应用? 答:XML(Extensible Markup Language)...

    dot Net中抽象类与接口的区别

    本文将深入探讨.NET中抽象类与接口的异同,并提供一些实践中的启示。 首先,从共性开始探讨。抽象类和接口都无法被直接实例化,它们都需要通过继承或实现来扩展类的功能。这意味着无论是抽象类还是接口,它们都为...

    2023年C#面试题中常见比较.doc

    C#中接口和类的异同 在C#中,接口和类都是用于定义自定义类型的语言结构,但它们有着不同的设计目标和使用场景。接口是一种特殊的抽象类,它定义了一组方法签名,但不提供任何实现。类可以继承其他类,实现接口。 ...

    11.5_ 接口与继承的实例,VS2008源代码

    4. **抽象类与接口的比较**:可能包括对比抽象类(Abstract Class)和接口的异同,以及在何时选择使用它们的指导。 5. **访问修饰符**:可能会涉及到如何通过访问修饰符(如public、private、protected等)控制继承...

    346.344.JAVA基础教程_面向对象(下)-抽象性的练习:基本操作(346).rar

    4. **接口的应用**:对比抽象类和接口,理解两者的异同,编写使用接口的代码。 5. **设计模式实践**:可能涉及单例模式、工厂模式等,这些设计模式经常利用抽象类和接口来实现。 **学习资源** 346.344.JAVA基础教程...

    详细对比php中类继承和接口继承

    接口和抽象类的异同点: 1. 实现接口使用 `implements` 关键字,继承抽象类使用 `extends` 关键字。 2. 接口没有数据成员,抽象类可以有。 3. 接口没有构造函数,抽象类可以有。 4. 接口方法都是 `public`,抽象类...

    java笔试题

    1、面向对象的特征有哪些方面?...23、抽象类(abstract class)和接口(interface)有什么异同? 24、静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 25、Java 中会存在内存泄漏吗,请简单描述。

    java技术支持面试题

    14. abstract class 和 interface 有什么区别? abstract class 是一个抽象类,interface 是一个接口。 15. heap 和 stack 有什么区别。 heap 是指内存中的堆栈,而 stack 是指方法调用栈。 16. GC 是什么?为...

    Java面试宝典2010版

    - **详细解析**:`abstract class`和`interface`都是用于定义模板类的工具,但它们之间存在显著差异。`abstract class`主要用于定义一个基本类的骨架,它可以包含具体实现、抽象方法以及其他成员。`interface`则用于...

    java抽象类和接口定义与用法详解

    抽象类和接口的异同: 相同: 1. 都不能创建对象。 2. 都需要用子类或实现类来继承或实现。 3. 都可以包含抽象方法。 4. 普通的子类或实现类必须实现所有的抽象方法。 不同: 1. 抽象类可以包含普通方法,而接口...

Global site tag (gtag.js) - Google Analytics