java中的抽象类和接口

来源:互联网 发布:阿里云 docker 加速 编辑:程序博客网 时间:2024/06/15 20:28

1抽象类

当定义一个类时,常常需要定义一些方法来描述类的行为特性,但有时这些方法的实现方式是无法确定的。例如在Animal类中,shout方法用户表示动物的叫声,但是针对不同的动物叫声不同,因此在shout方法中无法准确的描述动物的叫声。

针对这种情况,java中允许定义方法时不写方法体,即抽象方法,抽象方法必须使用abstract关键字修饰,如下:

 abstract oid shout(); //定义抽象方法shout

在定义抽象类时需要注意:

1包含抽象方法的类必须声明为抽象类,但抽象类中不一定含有抽象方法。

2抽象类不能被实例化,因为抽象类中可能包含抽象方法,抽象方法是没有方法体的,不可以被调用。

3如果想调用抽象类中定义的方法,需要创建一个子类,在子类中实现抽象类中的抽象方法。

例子:

abstract class Animal{     abstract void shout(); //定义抽象方法shout } class Dog extends Animal{      void shout(){           System.out.println("汪汪");       } } public class Demo{    public static void main(String[] args){         Dog dog=new Dog();  //创建dag类的实例对象         dog.shout();    //调用shout方法    } }结果:汪汪运行结果可以看出,子类实现了父类的抽象方法。

2接口

如果一个抽象类中所有的方法都是抽象的,则可以将这个类用另外一种方式定义,即接口。在定义接口时需要使用interface关键字,例:

  interface Animal {    int ID=1; //定义全局变量   void eat();  void shout();}

因为接口中 定义的方法和变量包含了一些默认的修饰符,接口中定义的方法,默认使用“public abstract”来修饰,接口中的变量默认使用"public static final"来修饰。

接口中的一些特点:

1 接口中的方法都是抽象的,不能实例化。

2 当一个类实现接口时,如果这个类是抽象的,则实现接口中的部分方法即可,否则需要实现接口中的所以方法。

3 一个类通过implements实现接口时,可以实现多个接口,中间用逗号隔开。

4 一个接口可以通过extends关键字继承多个接口,接口直接用逗号隔开。

5 一个类在继承另外一个类时同时还可以实现接口,此时extends关键字必须位与implements之前。


原创粉丝点击