Java中抽象类与接口的注意要点

来源:互联网 发布:淘宝上买春药搜什么 编辑:程序博客网 时间:2024/06/05 02:06

抽象类与接口,对于其中的一些规定如果不是很清楚则会常常造成程序编译不通过的现象。所以,特意整理一下关于抽象与接口的注意地方。

我们需要知道的:

  1. 抽象类是不能生成对象的
  2. 抽象类中的方法可以是抽象方法(没有方法体),也可以是具体方法(有具体方法体)
  3. 必须为抽象父类中的所有的抽象方法进行具体定义重写
  4. 对于抽象父类中的非抽象方法可以不用重写
  5. 接口中所有方法均是抽象方法,且默认修饰符是public
  6. 普通类继承抽象类时,重写的方法的修饰符可以不是public
  7. 抽象类实现接口可以选择实现某种方法,不用全部实现

小例子来具体实现:

abstract class Ab{    abstract void g();    abstract void k();    void f(){};         //抽象类中可以定义非抽象方法,但是一样要是具体方法;}class Cc extends Ab{    void g(){        System.out.println("g()");    }    void k(){        System.out.println("k()");    }                   //必须为抽象父类中的所有的抽象方法进行具体定义重写                        //对于抽象父类中的非抽象方法可以不用重写}class Dd extends Cc{    void g(){        System.out.println("g()1");    }                   //对于普通类的继承,选择方法重写即可,不用全部重写}interface in{    abstract void h();    void m();           //m方法仍是抽象方法,只是省略abstract关键字    //void j(){}        接口内应全都是抽象方法,不允许具体方法的出现    //接口内的方法的修饰符默认为public,可以省略不写,但是实现接口时方法要加上public}class ss implements in{    public void h(){};  //普通类继承抽象类时,重写的方法的修饰符可以不是public    public void m(){};  //普通类要实现接口中的所有方法}abstract class st implements in{    public void h(){        System.out.println("h1");    }}                       //抽象类实现接口可以选择实现某种方法,不用全部实现public class Demo{    public static void main(String []args){    Cc c1=new Cc();    Dd d1=new Dd();    c1.k();    d1.g();    }}

输出结果:

    k()    g()1
原创粉丝点击