Java入门(二十六)

本文介绍了Java中的抽象类和接口,强调它们作为抽象和约束的工具。抽象类不能被实例化,用于定义公共属性和行为,强制子类实现其抽象方法。接口则更抽象,只包含方法签名,不包含实现,允许多继承。通过接口,可以实现规范和实现的分离,提高代码的可扩展性和模块化。在实际开发中,面向接口编程有利于系统的解耦和设计。
摘要由CSDN通过智能技术生成

Java入门(二十六)

抽象类

  • 抽象类通过abstract修饰类。我们现在写一个Action类,他是个普通的类
    在这里插入图片描述
    但是只要在他前面生成abstract,他就变成抽象类了。
    在这里插入图片描述
  • 假设想再一个方法上面做一些事情,假设这个方法里面没有任何东西,是一个约束。如下,只有方法的约束,没有方法的名字。
  • 抽象方法只有方法名字,没有方法的实现。我们再来一个A类,要去继承这个抽象类。这时候就会报错,说如果要继承就必须重写抽象方法
    在这里插入图片描述
  • 抽象类所有方法必须由子类实现,继承了他的子类,他的子类都必须要实现它的方法。除非他的子类也是给abstract就没必要实现了,因为他的子类本身也是抽象的。
  • 抽象类本质是类,他需要继承,因此逃脱不了extends这个关键字。extends他有局限,他是单继承。单继承无法继承多个类,如果有多继承就好了。
  • java里面是没有多继承的,但是有句话:接口可以多继承。
  • 比如插座可以插很多东西,就这么可以约束他可以插什么头,但是并没有约束什么电器才可以插上去。
  • 抽象类没有什么特点,最大特点就是不能new出来。抽象类只能靠子类去实现它,就是约束。
    在这里插入图片描述
  • 抽象类里面他可以有一些正常的方法,但是假设方法存在抽象方法,他不能不是抽象类,他必须声明为抽象类。抽象类里面可以写普通方法,抽象方法必须在抽象类中。
  • 抽象类就是抽象的抽象。
  • 既然抽象类不能new,那么他存在构造器吗?抽象类存在的意义是什么?
  • 比如创建一个游戏角色比较麻烦,要重复创建,那么我们就可以把他的一些公有属性一起抽象出来。每创建一个就自动继承他的抽象类,然后重写他的方法就好了,改掉一些不必要的东西。节省代码开发,可扩展性高。

接口

  • 接口跟其他不一样,它定义的关键词都不是class。首先普通类只有具体的实现,而抽象类具体的实现可以有,抽象方法的实现也可以有,只是他不能new,只能通过子类去操作。而接口只有规范,他连实现都没有了。自己无法写方法。
  • 为什么需要接口?接口就是比抽象类更抽象的抽象,是专业的抽象,专业的约束,可以约束和实现的分离。以后进公司可以说就是面向接口编程,就是别人把接口定义好了,你往里面写方法就好了。抽象类还提供了一些具体的实现,在系统开发中,会把系统的接口全部设计好,文档定义好。
  • 接口就是规范,定义的是一组规则,就好比现实世界中”如果你是…则必须能…“的思想:如果你是天使必须能飞,如果你是汽车必须会跑,如果是好人必须干掉坏人。
  • 接口的本质是契约,就像人间法律,制定好后大家都要遵守。面向对象的精髓就是对对象的抽象,最能体现这一点的就是接口
  • 声明类的关键字是class,声明接口的关键字是interface。
    在这里插入图片描述
  • 接口中无法写具体的方法,里面很多东西都是看不见的,而且都是public abstract的。你写上abstract他就变成灰色的了,其实他很多地方你不写他默认就是public abstract。
    在这里插入图片描述
  • 所以接口的方法正常来说可以直接写简单的方法和参数
public interface UserService {
    void run(String name);
}
  • 比如定义增删改查
public interface UserService {
    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
}
  • 我们定义了四个方法,怎么去操作呢?其实这里只有定义而没有具体的实现,所以正常情况下需要实现类----接口都需要实现类。实现类会用Impl结尾
    在这里插入图片描述
  • 关键词是implements,一个类实现一个接口,实现接口就需要重写里面的方法,抽象类是通过extends,但是他有局限就是只能单继承。而implements可以继承多个。
    在这里插入图片描述
  • 只要实现了接口里面四个方法他就不会报错。实现了接口的类,必须重写里面的方法。
  • 再来一个方法
    在这里插入图片描述
public interface TimeService {
    void timer();
}
  • 咱们在UserServiceImpl实现一下
    在这里插入图片描述
    在这里插入图片描述
  • 然后看到他并没有报错,这就实现了多继承
    在这里插入图片描述
  • 接口有他的弊端,接口跟类不一样,类里有方法的实现,但是接口只有方法的定义。
  • 那么在接口当中想定义一些常量变量呢?在接口里面的属性他默认都是常量。
public static final int AGE = 99;   // 一般不用
  • 接口的作用:
  1. java的接口是约束
  2. 接口可以定义方法,让不同的人实现。
  3. 接口默认的方法都是public abstract
  4. 常量都是 public static final
  5. 接口不能直接被实例化,因为接口中没有构造方法
  6. 接口可以实现多个,通过implements实现
  7. 必须重写接口中的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值