zoukankan      html  css  js  c++  java
  • 抽象类和接口的区别

    一:总述

    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 另外,一个类可以实现多个接口,但是不能继承多个类。

  • 相关阅读:
    NOIP2013题解
    NOIP2012题解
    NOIP2011题解
    NOIP2010题解
    【BZOJ2302】[HAOI2011]Problem C(动态规划)
    【BZOJ2299】[HAOI2011]向量(数论)
    【BZOJ2285】[SDOI2011]保密(分数规划,网络流)
    【BZOJ2246】[SDOI2011]迷宫探险(搜索,动态规划)
    【BZOJ2281】[SDOI2011]黑白棋(博弈论,动态规划)
    【BZOJ2245】[SDOI2011]工作安排(费用流)
  • 原文地址:https://www.cnblogs.com/xhlwjy/p/11254801.html
Copyright © 2011-2022 走看看