抽象类和接口

1.关于JAVA中的抽象类和接口中常量和变量定义的原因:https://my.oschina.net/cdzsc/blog/86107
2. 抽象类和接口的区别是什么?https://wenda.so.com/q/1378780577069580?src=140

抽象类和接口不能实例化,但可以定义引用变量。

抽象类(用于定义实体类)

(1)抽象类的类名前有"abstract"关键字。
(2)含有一个或多个抽象方法的类一定是抽象类。
(3)抽象方法:只有行为的概念,没有具体的行为实现。
(4)抽象类中可以包含非抽象方法。
(5)抽象类中可以不包含抽象方法。
(6)JDK 1.8以前,抽象类的方法默认访问权限为protected;
JDK 1.8时,抽象类的方法默认访问权限变为default
(7)为什么抽象类中可以定义(非 static final)变量

  1. 因为每个类只能有一个父类,就不会产生下面的接口中的一些问题。
    (8)抽象类只能被继承
    (9)什么情况下可以使用抽象类:
    假设要组装多种配置的电脑,其配置参数如下图,可以看出,要配置n种电脑,每种电脑的硬盘、光驱、显示器是不同类型的,属于【并列关系(也可以看作顺序关系)】;主板是相同类型的,属于【共享关系】。因此,转化为抽象类如下。
    抽象类和接口_第1张图片
abstract class Computer{
    abstract void makeHardDisk();
    abstract void makeOptical();
    abstract void makeMonitor();
    void makeMainBoard();
}

接口( Interface,中文直译为:交互界面)(用于定义业务类)

(1) 接口中的属性,默认是常量 public static final
(2)为什么接口中只能定义static final
1、**static(这时暂且认为是变量)解释:**因为一个类可以实现多个接口,如果一个类同时实现了多个接口而每个接口中都定义了同一个变量的话就会产生在类中不知道是哪个接口中的变量了,所以必须定义成static的,每个接口拥有各自的这个变量。

2、**final解释:**因为一个接口可以被多个类实现,如果不定义成final的话每个实现了该接口的类都去改变这个变量就会产生错误,所以必须定义成final。
(3)什么情况下可以使用接口:
如下图所示为生产小汽车可由钢板切割、压模、组装、喷漆 4 个工序组成。这些工序是【顺序关系】,因此转化为接口是最合适的。
抽象类和接口_第2张图片

你可能感兴趣的:(java)