美文网首页
java -abstract类、接口

java -abstract类、接口

作者: snoweek | 来源:发表于2016-02-11 15:39 被阅读124次

    abstract类(抽象类)

    abstract类(抽象类)

    abstract class A{
    }
    

    ** abstract()方法**

    abstract int min(int x,int y);
    
    1. abstract类中可以有abstract()方法,也可以没有有abstract()方法。
    2. abstract类不能使用new运算创建对象。他只能被子类继承时才能发挥作用,且子类必须重写其abstract()方法,对于非abstract()方法可以重写,也可不重写,根据情况而定即可。即使抽象类中不包含抽象方法也不能被实例化。
    3. 对于abstract()方法,只允许声明,不允许实现,即没有方法体,也没有花括号。这样的方法必须在abstract类被继承时进行重写,所以不允许用final关键字修饰abstract类或方法。因为final修饰的类或方法是不允许北继承或者重写的。
    4. 具体子类在继承抽象类时,必须重写其所有抽象方法,否则,仍是一个抽象类。由此,也可知,抽象类可以继承抽象类。
    5. abstract类中可以有构造方法,但不能有抽象构造方法。
      因为子类不继承父类的构造方法,对于抽象方法必须进行重写,而二者相互矛盾。
    6. 模板方法设计模式是抽象类的一个典型应用。
    7. 抽象类:直接定义的抽象类;继承抽象类没有重写其全部的抽象方法;实现接口没有重写其全部的抽象方法。

    interface接口

    interface 接口名称{
    }
    

    接口体中包括常量和抽象方法两部分,注意没有普通成员变量和普通成员方法方法。
    接口中方法的修饰符为public abstract,常量的修饰符为public static final。以上修饰符号均可省略。

    public final int a=100;//等价写法:int a=100;
    public abstract int sum(int x,int y);//等价写法: int sum(int x,int y);
    

    抽象类和接口的比较

    1. 均不能使用new运算创建对象
    2. 在接口中只可以有abstract方法,不能有普通成员方法。在abstract类中,既可以有abstract方法,也可以有普通成员方法。
    3. 在接口中只可以有常量,不能有变量。在abstract类中,既可以有常量,也可以有变量。
    abstract class A{
    public int a=5;//这样定义变量可以
    public int a=a+5//这样不可以
    }
    
    1. 抽象类中可以有构造方法,接口中不能有构造方法
    2. 抽象类中可以包含静态方法,接口中没有静态方法。
    3. 一个类可以实现多个接口,但只能继承一个抽象类
    4. 抽象类中抽象方法的访问类型可以是public,protected和默认类型。
      接口中抽象方法访问类型只有public。

    相关文章

      网友评论

          本文标题:java -abstract类、接口

          本文链接:https://www.haomeiwen.com/subject/ybhukttx.html