Java进阶(8)——抽象类与接口

抽象类
  • 抽象类无法实例化:抽象类是类和类之间的共同特征,将这些具有共同特征进一步抽象成了抽象类。由于类本身是不存在的,所以抽象类无法创建对象,而对象是现实中存在的。
  • 语法
[修饰符列表] abstract class 类名{
       	类体;
}
  • 抽象类的子类可以是抽象类
  • 抽象类虽然无法实例化,但是抽象类有构造方法。这个构造方法是供子类使用的。
  • 抽象方法:表示没有实现的方法,没有方法体的方法
    exp:
public abstract void doSome();
  • 抽象类不一定有抽象方法
  • 如果一个方法是抽象方法,那么它所在的类一定是抽象类。
    exp:
abstarct class Animal{
        public abstract void move();
    }
  • 【重要】一个非抽象的类继承抽象类,必须将抽象类中的抽象方法实现了。
  • 抽象类属于引用数据类型
  • 抽象的本质是为了多态:Animal a = new Bird();
接口类
  • 也是一种引用数据类型,编译后也生产.class文件
  • 接口是完全抽象的
  • [修饰符列表] interface 接口名()
  • 接口支持多继承 interface C extends A,B{}
  • 接口只包含两个部分,一个是常量,一个是抽象方法。public abstract 可省略。接口中的所有内容都是public。接口中的常量public static final可以省略。
  • 接口中的方法都是抽象方法,这些方法不能有方法体。
  • 类实现接口要实现所有的方法。且实现后public不能省略。
  • 有了接口就有了“可插拔”,类似于内存条一般可以“插拔”,十分简便。
    exp:
interface MyMath{
    int sum(int a,int b);
}

class MyMathImpl implements MyMath{
    //int sum(int a,int b){
    //    return a+b;
    //}
    public int sum(int a,int b){
        return a+b;
    }
}
一个类可以实现多个接口

Java中类和类只支持单继承,实现多个接口,实际上就类似多继承,从而弥补单继承的缺陷。

继承和实现都存在时,如何写代码?

extends关键字在前,implements关键字在后
exp:

    main函数中:
    Flyable f = new Cat();//多态
    interface Flyable{
        void fly();
    }
    Class Cat extends Animal implements Flyable{//实现飞猫
接口在开发中的作用

接口在开发中的作用类似于多态在开发中的作用
exp:

public class Master{
    public void feed(Dog d){..}
    public void feed(Cat c){..}
}

上述代码当再新增宠物的时候需要改动代码,扩展力差
使用多态
exp:

public void feed(Animal a){
    //面向Animal父类编程,父类比子类更抽象
    //面向抽象编程,不要面向具体编程
    //如此,程序扩展力强
}

仅需修改,Animal a = new Cat();Animal a = new Dog();即可

从项目上看接口的意义

有了接口之后,我们可以将项目划分为多个项目组,分工完成。如下Food Menu接口实现了America Cooker和China Cooker实现类,项目组一根据这两个实现类与Food Menu接口完成项目。而项目组二直接根据Food Menu类和Customer类来完成项目。
请添加图片描述
刚入门的程序员抽象能力不佳,多是去写一些实现方法。当成为慢慢成为系统架构师,高级软件工程师,项目经理,系统分析师之后,就开始写接口程序。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

疯狂java杰尼龟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值