您的位置:首页 > 编程语言 > Java开发

Java关键字abstract 与 抽象接口区别

2017-06-04 18:19 579 查看
abstract 关键字可以修饰类或方法。

abstract 类可以扩展(增加子类),但不能直接实例化。

abstract 方法不在声明它的类中实现,但必须在某个子类中重写。

示例

  public abstract class MyClass
{
}


  public abstract String myMethod();


注释

采用 abstract 方法的类本来就是抽象类,并且必须声明为 abstract。

abstract 类不能实例化。

仅当 abstract 类的子类实现其超类的所有 abstract 方法时,才能实例化 abstract 类的子类。这种类称为具体类,以区别于 abstract 类。

如果 abstract 类的子类没有实现其超类的所有 abstract 方法,该子类也是 abstract 类。

abstract 关键字不能应用于 static、private 或 final 方法,因为这些方法不能被重写,因此,不能在子类中实现。

final 类的方法都不能是 abstract,因为 final 类不能有子类。

 

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

abstract作为修饰符,可以修饰类和方法。

    1.抽象类: 不能手动创建对象(JVM可以创建抽象类的对象),但是可以声明抽象类型的引用。

 public class TestAbstract1{

public static void main(String[] args){

//Animal a=new Animal(); //error

Animal a=null;

a=new Dog();

}

}

abstract class Animal{

}

class Dog extends Animal{

}

    2.抽象方法:有方法名的定义,没有实现,(只定义了能做什么,没定义怎么做)

    抽象方法的好处是允许方法的定义和实现分开。

 abstract class Animal{

public abstract void eat();

}
    抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法

    抽象类存在的意义是用来被继承的。一个类继承了一个抽象类,必须实现抽象类里面所有的抽象方法,否则,此类也是抽象类。

 abstract class Animal{

public void run(){}

public abstract void sleep();

public abstract void eat();

}

class Dog extends Animal{

public void sleep(){

System.out.println("Dog sleep.");

}

public void eat(){

System.out.println("Dog eat.");

}

}

abstract class Cat extends Animal{

public void eat(){

System.out.println("Cat eat.");

}

}
    可以声明父类类型子类对象,利用多态调用抽象方法

 public class TestAbstract1{

public static void main(String[] args){

Animal a=null;

a=new Dog();

a.sleep();

a.eat();

}

}
    抽象类有构造方法,有父类的,也遵循单继承的规律
 class E{}

abstract class Animal extends E{

public Animal(){

super();

}

}
抽象和接口区别:

接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,

另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。

还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: