java中的抽象类和接口

1抽象类

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

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

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

所以,抽象类是为了把相同的但不确定的东西的提取出来,为了以后的重用。定义成抽象类的目的,就是为了在子类中实现抽象类。 

用abstract修饰的类,即抽象类;用abstract修饰的方法,即抽象方法。

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

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之前。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值