抽象类与接口

抽象类与接口

一、抽象类

​ 在解决实际问题时,一般将父类定义为抽象类,需要使用这个父类进行继承与多态处理。回忆课上的内容,继承树中越往上的类越抽象,例如猫继承动物。在多态中,并不需要将父类初始化为对象,我们需要的只是子类对象,故在JAVA中抽象类不可以实例化对象。

​ 使用abstract关键字定义类称为抽象类,使用这个关键字定义的方法称为抽象方法。抽象方法没有方法体,这个方法本身没有任何意义,除非它被重写,而承载这个抽象方法的抽象类必须被继承,实际上抽象类除了被继承没有任何意义。定义抽象类的语法如下:

public abstract class Animal{
    public abstract void eat();  //定义抽象方法
}

接下来我们以下面代码为例进行讲解:

public abstract class Animal{  //定义一个动物类
    public abstract void eat(); //给一个抽象的方法,没有方法体
}
public class Cat extends Animal{//继承动物类的小猫类
    public void eat(){          //继承父类的eat方法并且有方法体,此时如果没有方法体,程序将会报错
        System.out.println("小猫吃鱼!");
    }
}
public class Dog extends Animal {//继承动物类的小狗类
    public void eat() {
        System.out.println("小狗吃骨头!");
    }
}
public class Test {             //定义一个操作类写main方法
    public static void main(String[] args) {
        Animal a = new Cat();   //利用多态相关知识直接使用eat方法
    }
}

在这里插入图片描述

二、接口

接口是抽象类的延伸,可以将它看作是纯粹的抽象类,接口中的所有方法都没有方法体。对于在上述抽象类中遗留的问题,可以将eat()方法封装到一个接口中,使需要eat()方法的类实现这个接口,同时也继承图形类,这就是接口存在的必要性。在下图中,描述了各个子类继承图形类后使用接口的关系。接口使用interface 关键字进行定义,其语法如下:

public interface class Animal{
        void eat();  //定义接口方法可省略public abstract关键字
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懵君意

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值