抽象类和接口的区别

一:总述

1 抽象类一般会实现一部分操作,并且留一些抽象方法让子类自己实现,比如Stringbuffer和Stringbuilder的父类abstractStringbuilder。

2 接口一般指一种规定,比如一个map接口中,可能需要实现增删改查等功能,如果你想实现一个具体map,这些方法就必须按照规定去实现。

3 另外,一个类可以实现多个接口,但是不能继承多个类。

二:例子

class A{
    
}
interface M extends N,L{
    
}
interface N{
    
}
interface L{
    
}
public interface InterfaceTest {
    public final int n=10;//默认变量是public final
    final A a =null;//基本数据类型和引用都一样
    //不能用private,protect修饰
    public abstract void a();//所有方法都是由public abstract修饰
    //void b(){} 报错,接口里的方法不能有方法体,也不能有{},只能有();
    // final void b();
    // 注意,抽象方法不能加final。因为final方法不能被重写。
    //但如果抽象方法不被重写那就没有意义了,因为他根本没有代码体。
}
public abstract class AbstractTest {
    public final int n=10;//变量并没有被pulic和final修饰,只是一般的成员变量
    public final A a=null;
    //抽象方法可以有具体的方法
    private void a(){}
    //抽象方法没有方法体
    abstract void b();
    //private abstract void B();//报错,组合非法

    // 因为private修饰的方法无法被子类重写,所以和final一样,使抽象方法无法被实现。
}

 

抽象方法可以被实例化

public abstract class B {
    B(){
        System.out.println("B被初始化了");
    }
}

class C extends B{
    C(){
        super();
        System.out.println("C被初始化了");
    }
}
//注意:先初始化B,然后初始化C,C会调用父类的构造方法

1 抽象类一般会实现一部分操作,并且留一些抽象方法让子类自己实现,比如Stringbuffer和Stringbuilder的父类abstractStringbuilder。

2 接口一般指一种规定,比如一个map接口中,可能需要实现增删改查等功能,如果你想实现一个具体map,这些方法就必须按照规定去实现。

3 另外,一个类可以实现多个接口,但是不能继承多个类。

原文地址:https://www.cnblogs.com/xhlwjy/p/11254801.html