java -abstract类、接口

2016-02-11  本文已影响124人  snoweek

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。
上一篇下一篇

猜你喜欢

热点阅读